我正在进行的项目如下:我有一个加密数据(Des,3Des)的Java Web服务。数据是从一个C#应用程序发送的。我想用它加密/解密一个1 MB大小的文件。我会得到一个异常。
文件以bitformat的形式放在byte[]中,并发送到Java Web服务进行加密/解密。Web服务完成后,需要将加密/解密的数据发送回来。
对于小文件,我没有遇到任何问题,但对于大小为1 MB或更大的文件,C#应用程序中会抛出异常,错误消息如下:* 未处理WebException:操作已超时 *
大约在以下时间后引发此错误:1分40秒
我读过StackOverflow上的不同帖子,但它们似乎总是与WebRequest和WebResponse一起工作。我不使用它们,我用来调用Web服务的代码是:
public byte[] TEncode(byte[] input, byte[] key)
{
return _webservice.TDesEncode(input, key);
}
有人能给我一些建议吗?我可以做些什么来解决这个问题?
EDIT尝试在app.config文件中增加会话超时,如下所示:
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
提前感谢Martijn
4条答案
按热度按时间neskvpey1#
听起来你需要增加超时。请查看这个site以获得解释和可能的修复。
vyu0f0g12#
尝试在本地调用encode函数,并测量编码所需的时间,尝试使用允许的最大文件大小来获取最坏情况。
如果时间对您来说是最佳的-将服务超时增加到该值。
如果没有-它可能是明智的优化编码功能,或编码在客户端/服务器端和传输已经加密的文件。
从安全Angular 来看,最后一种方法更好,因为在示例中,您可能将未加密的字节数组传递给远程服务-在这种情况下,它非常容易受到网络流量嗅探的攻击。
zxlwwiss3#
我认为您需要检查超时是否是在数据流到达服务主机期间造成的,或者实际加密是否花费了太长时间。如果是加密,您可能需要修改此设置。
我知道您正在使用1 MB进行测试,但是,如果您在LAN上使用千兆以太网运行1GB,在良好的网络上,仅将请求发送到服务主机就需要至少10- 15秒。
vnzz0bqm4#
我希望下面的代码可以正常工作..