假設我創建了HTTPWebRequest
,請調用它的GetResponse()
並開始從響應流中讀取數據。如果從流中讀取連接時中斷連接,是否必須等待連接超時,或者我能否立即知道出現了問題?當我中斷連接時(例如,斷開我的計算機與網絡的連接),不會引發異常情況。如何在C#中處理中斷的HTTP連接
2
A
回答
1
這取決於具體情況。
一般而言,您需要爲兩種情況(即時和延遲中斷)做好準備。例如,如果服務器斷開你的連接,你就會比較快地知道。
見http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus爲各種可能出現的錯誤的(在WebRequest
類的錯誤拋出WebException
S)
你有多種選擇:
- 使用異步方法(
BeginGet...
和EndGet...
)並圍繞此建模您的應用程序。基本上,如果有成功或錯誤,你會在「某個時候」得到通知。在此期間做其他事情 - 如果您想要絕對控制,您可以在獲取的流上指定
ReadTimeout
(請參閱有關其他答案的評論,並在請求中也設置Timeout
)。重試或其他。 - 只需等待
-1
最可能的是,你必須等待超時
0
您不必如果請求被中斷或不擔心。
您可以指定顯式超時,如下所示。 如果它中斷,你會得到例外。
try
{
var request = HttpWebRequest.Create(url);
request.Timeout = 3000;
var response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode.Equals(HttpStatusCode.OK))
{
//do stuff
}
}
catch (Exception exception)
{
exception.ToLog();
}
相關問題
- 1. 如何在.NET中處理HTTP連接?
- 2. 如何處理Mongoose DB連接中斷
- 3. 處理軌道中的連接中斷
- 4. 如何處理java中的連接中斷
- 5. PCFMessageAgent如何處理斷開連接?
- 6. 如何在Socket編程中處理客戶端斷開連接?
- 7. 關於在丟包或連接中斷時處理TCP連接
- 8. 處理SQLAlchemy斷開連接
- 9. 如何在批處理文件中斷開Wifi連接命令(直到連接)?
- 10. 如何處理Java中的Socket斷開連接?
- 11. 如何處理AWS IOT中的斷開連接事件?
- 12. 如何正確處理中斷的TCP連接?
- 13. 處理多個HTTP連接
- 14. 如何處理ruby Net/HTTP中的連接超時錯誤?
- 15. 如何在AsyncTaskLoader中處理SQLiteDatabase連接?
- 16. c#如何處理互聯網中斷
- 17. 在Python中處理的信號導致FTP連接中斷
- 18. 如何處理網絡中斷和連接池
- 19. 如何處理ProcessPool中的SQLAlchemy連接?
- 20. 如何處理http鏈接?
- 21. 在後端處理HTTP和websocket連接
- 22. 如何處理來自多個活動的連續HTTP連接?
- 23. 處理器如何處理中斷
- 24. 如何以最佳方式在c#中處理SQL連接?
- 25. SMP如何處理中斷?
- 26. KVM如何處理中斷
- 27. 如何處理中斷?
- 28. SignalR - 處理斷開連接的用戶
- 29. db4o在斷開連接的上下文中:如何處理保存/更新
- 30. C中的FPGA中斷處理
超時不會涵蓋獲取響應流afaik後發生的情況。所以你仍然可以在閱讀響應流的時候超時 – skarmats
我正在使用這個(改變stream.ReadTimeout來代替),但顯然我不能限制它太多,否則它會很容易超時。 –