我们有一个在 IIS 中运行的 ASP.NET Web 应用程序,它使用 SoapHttpClientProtocol 类进行 SOAP 调用。在过去的几天里,一些 XP 机器在进行 SOAP 服务调用时开始报告超时错误。
来自测试应用程序的堆栈跟踪:
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 TestWS.localhost.Service1.HelloWorld() in C:\Prototypes\TestWS\Web References\localhost\Reference.cs:line 78
at ASP.default_aspx.__Renderform1(HtmlTextWriter __w, Control parameterContainer) in c:\Inetpub\wwwroot\TestWS\Default.aspx:line 17
使用 TCP/ Trace 和 Wireshark,我们可以看到正在发送请求的标头,但没有发送内容。但是,content-length HTTP 参数是正确的,就好像内容流没有被刷新一样。
我们怀疑微软更新导致了这个问题。可能是 KB970430、KB971737和KB968389。该问题似乎与 IIS 5.x(IIS 的 XP 版本)有关。