2009-01-09 200 views
8

我已經構建了一個簡單的Web服務,它只是簡單地使用HttpListener來接收和發送請求。有時,服務會因「指定的網絡名稱不再可用」而失敗。當我寫入HttpListenerResponse的輸出緩衝區時,它似乎被拋出。Httplistener中的「指定的網絡名稱不再可用」

以下是錯誤:

ListenerCallback() Error: The specified network name is no longer available at System.Net.HttpResponseStream.Write(Byte[] buffer, Int32 offset, Int32 size)

這裏是代碼的有罪部分。 responseString是數據被髮送回客戶端:

  buffer = System.Text.Encoding.UTF8.GetBytes(responseString); 

      response.ContentLength64 = buffer.Length; 
      output = response.OutputStream; 
      output.Write(buffer, 0, buffer.Length); 

它似乎並不永遠是一個巨大的緩衝區,兩個例子是3,816字節,字節142619,這些錯誤被拋出相隔約30秒。我不認爲我的單個客戶端應用程序會超載HTTPlistener;客戶端偶爾會以突發方式發送/接收數據,並且多個交換機依次發生。

大多數谷歌搜索顯示,這是一個常見的IT問題,當存在網絡問題時,會顯示此錯誤 - 大多數幫助針對的是系統管理員診斷應用程序問題,而不是開發人員追蹤錯誤。我的應用已經在不同的機器,網絡等上進行過測試,我不認爲這只是一個網絡配置問題。

什麼可能是這個問題的原因?

+0

你有任何可以發佈的代碼嗎?減少顯示錯誤的東西會非常有幫助。 – 2009-01-09 21:18:41

回答

0

到目前爲止,我只使用HttpListener得到了這個特殊的異常。 當我的應用程序在斷點處停留一段時間後恢復執行時,發生了這種情況。

也許有涉及某種內部超時?你的應用程序以突發方式發送數據,這意味着它可能在很長一段時間內完全不活動。在一段不活動之後立即發生異常?

2

我也收到了這個,當ContentLength64指定和KeepAlivefalse。看起來好像客戶端正在檢查標頭(由所有可能的帳戶設置正確,因爲我得到一個帶有任何其他值的異常),然後說「我完成了KTHXBYE」,然後關閉連接位於基礎HttpListenerResponse流之前的位置。現在,我只是捕捉異常並繼續前進。

相關問題