我正在进行的项目如下: 我有一个加密数据的Java Web服务(Des,3Des)。数据从C#应用程序发送。我希望加密/解密大小为1MB的文件。我会得到一个例外。
将文件放在byte []中,以bitformat形式发送到Java Web服务进行加密/解密。在webservice完成之后,它需要重新发送加密/解密数据。
使用小文件我没有问题,但是在C#应用程序中抛出了大小为1MB或更大的文件,错误有以下消息: WebException未处理:操作已超时
在大约:1min40sec
之后抛出此错误我在StackOverflow上阅读了不同的帖子,但它们似乎总是与WebRequest和WebResponse一起使用。我没有使用它,我用来调用我的web服务的代码是:
public byte[] TEncode(byte[] input, byte[] key)
{
return _webservice.TDesEncode(input, key);
}
有没有人建议我可以做些什么来解决这个问题?
修改 试图增加app.config文件中的会话超时,如:
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
提前致谢 马亭
答案 0 :(得分:0)
听起来你需要增加超时。查看此site以获得解释和可能的解决方法。
答案 1 :(得分:0)
尝试调用编码函数localy并测量编码所需的时间,尝试使用允许的最大文件大小来获得最坏的情况。
如果时间最适合您 - 将服务超时增加到该值。
如果不是 - 优化编码功能,或在客户端/服务器端编码并传输已加密的文件可能是明智之举。
从安全点开始,最后一种方法更好,就像在您的示例中将未加密的字节数组传递给可能的远程服务一样 - 在这种情况下,它非常容易受到网络流量嗅探。
答案 2 :(得分:0)
我认为您需要检查在数据流到服务主机的流式传输时间内是否导致超时,或者实际加密是否花费太长时间。 如果是加密,您可能需要修改它。
我知道你正在测试1MB,但是,如果你使用千兆以太网在局域网上运行1GB,那么在良好的网络上至少需要10-15秒,只需将请求发送到服务主持人。
答案 3 :(得分:0)
希望以下代码能够正常运作..
var objNotificationCreation = new BS_INTELATRAC_DES_SI_Intelatrac_NotificationCreation_InS
{
Credentials = new NetworkCredential("user name","password")//if needed,
Timeout=int.MaxValue
};