我正在嘗試使用已使用Soap :: Lite(Perl)創建的Web服務。我正在使用C#使用該服務。大多數情況下,它工作正常。我可以抓住迴應,並在我認爲合適的時候解析它們。但是,我有一些不起作用的呼叫。SOAP響應大小
我得到以下信息:
這是我的理解是,服務器可能切斷對 無論什麼原因的連接「的現有連接被強行關閉遠程主機」。我試圖找到原因。我認爲這是由於 的一些反應的細節的大小。我有一個特別的問題,那就是 總是會失敗,當我從SOAP響應中查看XML時,總是會將 截斷爲完全相同的位置,就像它到達該位置並已達到 的限制。
所以,我所做的一切,我能想到的在客戶端的大小,如改變 MaxReceivedMessageSize和超時設置等我發現我可以 增加超時和執行時間隨後增加,但診斷日誌記錄我總是停在同一個地方。
我也寫過一個類,允許我查看原始XML並再次停止在同一個地方。
我在想也許服務器上的某些東西需要更改,但是我嘗試過的所有東西都不起作用。該服務託管在運行IIS 6的Web服務器上。
有人對我在客戶端和/或服務器端可以做什麼有什麼建議嗎?
感謝
編輯
我要指出,沒有WSDL文件,我使用。我正在使用的應用程序是我使用SOAP :: Lite的唯一時間,並且從我所能告訴的它不會生成WSDL。
@ e36M3 - 感謝您的建議。我從來沒有聽說過soapUI。我安裝了它並試用了它,我可以看到它的許多用途,所以我將在未來記住它。不幸的是,它似乎是圍繞着WSDL測試而構建的,我無法看到如何在沒有提供WSDL的情況下對其進行測試,這對於這種特殊情況是一個問題。
以下是我的跟蹤日誌中的一些相關數據。它從無效的xml結束並以錯誤信息結束的地方開始。
System.Net詳細:0:000031E0;/map>。數據
System.Net詳細:0:000031E0>。 System.Net詳細:0:[5772] 000031E0 ESP1:MRWebServic
System.Net詳細:0:[5772] 000031E0 es__getIssueDeta
System.Net詳細:0:[5772] 000031E0 ilsResponse> System.Net詳細: 0:[0072] System.Net詳細信息:0:[0507] 000031E0 AP-ENV:Envelope>
System.Net詳細信息:0:[5772]退出ConnectStream#15566556 :: Read( ) - > 12880#12880 < 系統。Net Verbose:0:[5772] ConnectStream#15566556 :: Read()
System.Net.Sockets詳細:0:[5772]套接字#20784002 :: Receive()
System.Net.Sockets錯誤:0: 5772]套接字中的異常#20784002 ::接收 - 連接嘗試失敗,因爲連接方在 一段時間後未正確響應,或者由於連接的主機未能連接而導致連接失敗 響應
System.Net.Sockets詳細信息:0:[5772]退出套接字#20784002 ::接收() - > 0#0
System.Net.Sockets詳細:0:[5772]套接字#20784002 ::處置()
System.Net錯誤: 0:[5772] HttpWebRequest中的異常#63722612 :: - 底層連接已關閉:未指定d接收發生錯誤。 System.Net詳細:0:[5772] ConnectStream#15566556 ::關閉()
System.Net詳細:0:[5772]退出ConnectStream#15566556 ::關閉()
確保這些特定的調用不會在服務器端崩潰。 – Adi 2011-05-13 13:34:04
你是否嘗試過從soapUI或類似的執行呼叫?這將幫助你排除.NET作爲失敗的原因。 – e36M3 2011-05-13 13:50:43