在我的.NET应用程序中调用Web服务操作时出现以下异常:
System.Net.WebException:操作已超时 System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest的 请求) System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest的 请求) System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(字符串 methodName,Object [] parameters)at org.wvi.hrmgmt.HRManagementServiceserviceagent.LoadReducedTemplate(LoadReducedTemplateRequest LoadReducedTemplateRequest)at org.wvi.mgmt.hr._ServiceClient.UploadReducedTemplate()
基本上,用户将文件上传到Web服务器,并且在调用Web服务操作时,此文件的二进制内容将作为输入参数之一传递。文件的大小是1,397 KB,如果我选择处理这个文件,我会得到例外。然而,处理一个相对较小的文件(假定为127 KB)会给出成功的响应。
我已经完成了以下步骤以解决困境:
将Web服务超时设置为无限。 - >没有得到例外和任何回复
添加Response.Close() - >没有得到任何回复
在IIS服务器中编辑web.config并添加以下行: - >仍然得到例外
<system.web>
<customErrors mode="Off"/>
<httpRuntime executionTimeout="600" maxRequestLength="16384"/>
<sessionState timeout="540"/>
</system.web>
然而,无济于事,我仍然得到上述例外。我正在使用一个名为AjaxUpload的Javascript插件来自GitHub,我无法弄清楚他们是否有文件上传大小限制。此外,我已经检查了文件是否正在服务器上传,因此,问题可能不是因为该插件。
另一个问题是,在网页打开一段时间后上传文件时,我遇到了同样的异常。我猜测这与会话超时有关,所以我在web.config文件中添加了一行,指定了最大超时。如果我走在正确的轨道上,请告诉我。
我是否需要在IIS服务器中应用其他设置才能使操作成功?否则,我有什么遗失的吗?如果您以前经历过这种情况,请告诉我该怎么做。
非常感谢, 拉尔夫
答案 0 :(得分:0)
这可能是由于之前打开了很多代理。因此,我建议您删除Service.Reference.Config以及Web服务引用,并再次添加服务引用,看看它是否解决了您的问题。
答案 1 :(得分:0)
添加到上一个答案,您可以尝试在代理类上设置执行时间,请参阅discussion
您的服务调用正在执行长时间运行的任务,您可能希望通过在代理类中设置超时(如前所述)来为任何Web服务调用留出长时间。