在我的 .NET 应用程序中调用 Web 服务操作时出现以下异常:
System.Net.WebException: The operation has timed out at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request) at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at org.wvi.hrmgmt.HRManagementServiceserviceagent.LoadReducedTemplate(LoadReducedTemplateRequest LoadReducedTemplateRequest) at org.wvi.mgmt.hr._ServiceClient.UploadReducedTemplate()
基本上,用户将文件上传到网络服务器,该文件的二进制内容在调用网络服务操作时作为输入参数之一传递。该文件的大小为 1,397 KB,如果我选择处理该文件,则会出现异常。然而,处理一个相对较小的文件(假设为 127 KB)会给出成功的响应。
为了解决这个难题,我做了以下步骤:
将网络服务超时设置为无限。 -> 没有得到异常和任何响应
添加 Response.Close() -> 没有得到任何响应
在 IIS 服务器中编辑 web.config 并添加以下行:-> 仍然收到异常
<system.web> <customErrors mode="Off"/> <httpRuntime executionTimeout="600" maxRequestLength="16384"/> <sessionState timeout="540"/> </system.web>
但是,无济于事,我仍然得到上述异常。我正在使用来自 GitHub 的名为 AjaxUpload 的 Javascript 插件,我无法确定它们是否有文件上传大小限制。此外,我已经检查了文件是否正在上传到服务器上并且确实如此,因此问题可能不是因为那个插件。
另一个问题是,在网页打开一段时间后上传文件时,我遇到了同样的异常。我推测这与 session 超时有关,因此我在我的 web.config 文件中添加了一行来指定最大超时。如果我在正确的轨道上,请告诉我。
是否需要在我的 IIS 服务器中应用其他设置才能使操作成功?否则,我有什么遗漏吗?如果您以前遇到过这种情况,请告诉我该怎么做。
非常感谢, 拉尔夫
最佳答案
这可能是因为之前打开了很多代理。因此,我建议您删除 Service.Reference.Config 以及 Web 服务引用,然后重新添加服务引用,看看是否能解决您的问题。
关于c# - .NET Web 服务超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7496941/