Webservice - 操作超时

问题描述 投票:0回答:4

我正在做的项目如下: 我有一个加密数据的 Java 网络服务(Des,3Des)。数据从 C# 应用程序发送。我想加密/解密大小为 1MB 的文件。我会得到一个例外。

文件被放入byte[],以位格式发送到Java webservice进行加密/解密。在网络服务完成后,它需要将加密/解密的数据发回。

对于小文件,我没有问题,但大小为 1MB 或更大的文件在 C# 应用程序中抛出异常,错误消息如下: WebException was unhandled: The operation has timed out

此错误在大约 1 分钟 40 秒后抛出

我在 StackOverflow 上阅读过不同的帖子,但它们似乎总是适用于 WebRequest 和 WebResponse。我没有使用它,我用来调用我的网络服务的代码是:

public byte[] TEncode(byte[] input, byte[] key)
{
    return _webservice.TDesEncode(input, key);
}

有没有人给我一些建议,我可以做些什么来解决这个问题?

编辑 试图增加 app.config 文件中的会话超时,例如:

<system.web>
<sessionState timeout="20"></sessionState>
</system.web>

提前致谢 马丁

c# web-services soap wsdl java-ws
4个回答
0
投票

听起来你需要增加超时时间。查看此 site 以获取解释和可能的修复方法。


0
投票

尝试在本地调用编码函数并测量编码需要多少时间,尝试使用允许的最大文件大小以获得最坏情况。

如果时间最适合您 - 将服务超时增加到该值。

如果不是 - 优化编码功能或在客户端/服务器端编码并传输已加密的文件可能是明智的。

从安全角度来看,最后一种方法更好,因为在您的示例中,您可能将未加密的字节数组传递给远程服务 - 在这种情况下,它非常容易受到网络流量嗅探的影响。


0
投票

我觉得你需要检查一下是不是流式传输超时导致数据打到服务主机,还是实际加密时间过长。 如果它的加密,你可能需要修改这个。

我知道您正在使用 1MB 进行测试,但是,如果您在 LAN 上使用千兆以太网运行它,则在 1GB 时,在良好的网络上至少需要 10-15 秒才能将请求发送到服务主持人


0
投票

希望下面的代码能工作..

var objNotificationCreation = new BS_INTELATRAC_DES_SI_Intelatrac_NotificationCreation_InS
{
Credentials = new NetworkCredential("user name","password")//if needed,
Timeout=int.MaxValue
};
© www.soinside.com 2019 - 2024. All rights reserved.