假设我创建了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来代替),但显然我不能限制它太多,否则它会很容易超时。 –