2009-03-02 67 views
1

我有一個Web應用程序,輪詢另一臺服務器上的Web服務。服務器位於同一網絡上,並通過一個內部IP引用,在端口8080上的HttpWebRequest不返回,關閉連接

每15秒運行,一個請求被髮送出去,其接收與作業信息的XML響應。 95%的時間,這個效果很好,但是在隨機時間,對服務器的請求爲空,並報告「由遠程主機強行關閉的響應」。

研究這個問題,其他人設置的KeepAlive =假。這並沒有解決這個問題。 Web服務器運行.NET 3.5 SP1。

Uri serverPath = new Uri(_Url); 

// create the request and set the login credentials 
_Req = (HttpWebRequest)WebRequest.Create(serverPath); 
_Req.KeepAlive = false; 
_Req.Credentials = new NetworkCredential(username, password); 
_Req.Method = this._Method; 

電話響應:

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
_ResponseStream = response.GetResponseStream(); 

的方法用於此是GET。我嘗試更改超時時間,但默認值足夠大,可以將其考慮在內。

我們執行的其他請求是數據發佈到服務器的POST,我們所得到的是同樣的問題隨機爲好。沒有防火牆影響到這一點,我們排除了病毒掃描程序。任何想法,以幫助解決這個問題,非常感謝!

+0

什麼是斷開的頻率是多少?服務器日誌中有趣的事情? – jdigital 2009-03-02 22:19:04

回答

5

你關閉響應流和響應本身的處置?這是使用WebRequest「掛起」的最常見原因 - 您可以同時向同一臺計算機打開多少個連接。 GC將最終完成連接,但如果正確處置它們,這不是問題。

0

我不排除網絡問題作爲問題的可能原因。你是否運行了ping服務器來查看是否丟失了與失敗請求相同時間的數據包?

0

將FtpWebRequest對象的timeout屬性設置爲最大值,我用4 GB的文件試了一下,效果很好。