.NET Web 服务超时异常

Posted

技术标签:

【中文标题】.NET Web 服务超时异常【英文标题】:.NET WebService Timeout Exception 【发布时间】:2011-09-21 08:42:49 【问题描述】:

在我的 .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(字符串 方法名,对象 [] 参数)在 org.wvi.hrmgmt.HRManagementServiceserviceagent.LoadReducedTemplate(LoadReducedTemplateRequest LoadReducedTemplateRequest) 在 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>
    

但是,无济于事,我仍然遇到上述异常。我正在使用来自 GitHub 的名为 AjaxUpload 的 javascript 插件,但我无法确定它们是否有文件上传大小限制。此外,我已经检查了文件是否正在上传到服务器上,并且确实如此,因此,问题可能不是因为那个插件。

另一个问题是,在打开网页一段时间后上传文件时,我遇到了同样的异常。我推测这与会话超时有关,所以我在 web.config 文件中添加了一个附加行,指定最大超时。如果我走在正确的轨道上,请告诉我。

是否需要在我的 IIS 服务器中应用其他设置才能使操作成功?否则,我有什么遗漏吗?如果您以前遇到过这种情况,请告诉我该怎么做。

非常感谢, 拉尔夫

【问题讨论】:

【参考方案1】:

这可能是由于之前打开了很多代理。所以我建议你把Service.Reference.Config连同web服务引用一起删除,然后重新添加服务引用,看看它是否能解决你的问题。

【讨论】:

【参考方案2】:

在上一个答案的基础上,您可以尝试在代理类上设置执行超时,参考discussion

并且您的服务调用正在执行一项长时间运行的任务,您可能希望通过在代理类中设置超时来让任何 Web 服务调用长时间超时,如前所述。

【讨论】:

以上是关于.NET Web 服务超时异常的主要内容,如果未能解决你的问题,请参考以下文章

尝试从asp.net web api调用获取响应时android studio中的超时异常

为 .NET Web 服务设置超时值

System.Web.HttpException:请求超时

Web服务调用超时问题

Spring RestTemplate 连接超时不起作用

PHP SoapClient 超时