我有一個需要連接到遠程SAP服務器一個WPF C#應用程序連接每次。我在兩臺計算機(同一網絡)上運行應用程序,並且我知道服務器可以訪問。HttpWebRequest的失敗,除非我重新啓動計算機
起初,計算機A可以使用web請求(使多次嘗試後,他們都很好地工作)正常連接。隨機(看起來;我不能重複),所有的Web請求都會失敗,並顯示消息「無法連接到遠程服務器」(輸入System.Net.WebException)。導航到瀏覽器中的網址加載正常;只有應用程序無法連接。拋出異常的方法是HttpWebRequest.GetRequestStream。
即使重新啓動應用程序幾次之後,所有HttpWebRequests仍然無法連接。我們有多個SAP服務器,試圖連接到它們中的任何一個都會得到相同的結果。同時,計算機B(我的開發計算機)上的應用程序仍然可以連接到任何服務器,而不會出現任何問題。只有完全重新啓動計算機A之後,才能再次連接。
這在目前發生在兩個不同的計算機上。兩次,解決它的唯一方法是重新啓動計算機。
下面是一些代碼:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "text/xml; charset=utf-8";
request.ContentLength = contentLength;
request.Headers.Add("Authorization", GetAuthHeader());
request.Timeout = GetTimeout();
Stream post = request.GetRequestStream();//this line throws the exception
//...write to stream...
post.Close();
編輯:忽略響應部分:
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responsedata = response.GetResponseStream();
//...read all response data...
if (responsedata != null)
responsedata.Close();
EDIT2: 所以我註釋掉了所有的呼叫要關閉,並提出了幾十個請求。我還刪除了獲取響應的代碼併發出了更多請求。在這些測試中,我沒有收到任何例外,一切正常。
這些結果不談,我能理解這樣的事情會打破我的計劃,但我不明白爲什麼它仍然會重新啓動程序或嘗試接觸不同的遠程服務器之後被打破。 它的接縫就像在.NET框架中越來越混亂,除非我重新啓動整個機器,否則它不會自行解析。
你有沒有試過用Wireshark在網絡層面看看發生了什麼? – 2013-03-14 15:49:17
@JonSkeet哇,是的,我絕對後悔沒有看到問題發生時的情況。如果它再次發生,那我會檢查的第一件事。 – FUR10N 2013-03-14 16:04:19
@ FUR10N ...你真的在讀迴應嗎?我認爲如果你還沒有這樣做,這可能是一個好主意......你可能會留下一堆半完成的請求。 – spender 2013-03-14 16:19:39