2011-01-06 28 views
10

我們在Winforms應用程序中使用WebClient,.NET 3.5sp1。對於某些用戶,這會導致 出現異常並顯示以下消息:重現「服務器關閉了預期保持活動狀態的連接。」

「底層連接已關閉:預計將保持活動的連接已被服務器關閉。」

搜索各地的網絡有點暗示的是「固定」只是禁用HTTP保持活動,我們不是在做真正的興趣,一些表明它可能是在.NET庫中的錯誤,等等。

該錯誤消息表明它是一個Keepaliv'ed http連接,不知何故被服務器(或代理服務器)關閉,而WebClient沒有正確檢測到它。

我們正在考慮抓住這個特殊情況,並且只需再次嘗試請求。但是我們不能重現這個例外。所以。

  1. 我們該如何正確捕捉產生上述錯誤信息的情況。

    趕上(引發WebException前){ 如果(ex.Message ==「的基礎連接已關閉:這是預計將保持活動狀態的連接被服務器關閉」){...}

    不好聞。

  2. 有關如何重現上述異常的任何提示?

+0

`對於一些users`表明,這不是每個人。這些用戶是在代理之後(明確設置還是透明代理)?企業環境中繁忙的代理服務器可能會意外斷開連接,因此是例外。無論哪種方式,這都是某種網絡問題(客戶端,主機或中間位),而不是.NET Framework中的錯誤。 – 2011-01-06 13:39:22

+2

你可能是對的,這是一個網絡問題。因此,我們想嘗試簡單地重試請求,如果這個特定的,儘管我們只知道這是源自WebException的文本 - 那麼是否有可靠的方法來檢測這種特定的偏見,某些特定的錯誤代碼或什麼不是?我們想重現它,所以我們可以測試在發生「連接已關閉」時重試請求不會導致其他問題 – Habalusa 2011-01-06 14:14:01

回答

2

WebClient檢測到這一點很好。因此例外。你需要找到那些行爲不端的服務器。不太確定如果您找到該服務器該怎麼做,也許您可​​以向管理員發送一封很好的電子郵件。

記錄服務器URL。

1

我建議你看看this博客由Misrosoft:HTTP客戶端協議問題

相關問題