.NET WebService超时异常

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

在 .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)会给出成功的响应。

为了解决这个困境,我已经完成了以下步骤:

  1. 将 Web 服务超时设置为无限。 -> 没有收到异常和任何响应

  2. 添加 Response.Close() -> 没有得到任何响应

  3. 在 IIS 服务器中编辑 web.config 并添加以下行: -> 仍然出现异常

    <system.web>
        <customErrors mode="Off"/>
    <httpRuntime executionTimeout="600" maxRequestLength="16384"/>
    <sessionState timeout="540"/>
    </system.web>
    

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

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

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

非常感谢, 拉尔夫

c# .net web-services iis
2个回答
0
投票

这可能是因为之前打开了很多代理。因此,我建议您删除 Service.Reference.Config 以及 Web 服务引用,然后再次添加服务引用,看看是否能解决您的问题。


0
投票

补充之前的答案,您可以尝试在代理类上设置执行超时,请参考此讨论

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

© www.soinside.com 2019 - 2024. All rights reserved.