簡體   English   中英

來自IIS 5.1(XP)的SOAP服務調用超時

[英]SOAP services calls from IIS 5.1 (XP) timing out

我們有一個在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參數是正確的,幾乎就像沒有刷新內容流一樣。

我們懷疑Microsoft更新導致了此問題。 可能是KB970430KB971737KB968389 該問題似乎只存在於IIS 5.x(IIS的XP版本)中。

更新 :事實證明,這是Web服務器上運行的ESET防病毒問題以及對從Web服務器到SOAP服務器的HTTP連接進行即時檢查的問題。

完整說明 :為了記錄這是在HTTP協議在.NET處理中的缺陷。 場景如下:

客戶端發送HTTP POST標頭:

POST /WS/Test.asmx HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.3603) 
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://testuri.org/HelloWorld"
Host: loadtest-app
Content-Length: 288
Expect: 100-continue
Connection: Keep-Alive

由於“預期:100-繼續”,未發送內容。 服務器現在響應:

HTTP/1.1 100 Continue

此時客戶端不響應。 一種解決方法是禁用100-continue,這實際上會強制將請求標頭和內容分塊發送。 可以在web.config中使用以下命令完成此操作:

<system.net>
   <settings>
      <servicePointManager expect100Continue="false"/>
   </settings>
</system.net>

但是,如果我們還打開了客戶端跟蹤日志記錄,則會引發協議異常,該異常表示在HTTP標頭中CR之后應為LF。 .Net網絡邏輯中的某些地方似乎有些易碎的代碼。 概括地說,這只是IIS 5.1(在XP上運行的版本)中ASP.NET的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM