WebRequest在不完整的慢响应上设置超时

时间:2016-07-14 22:27:08

标签: timeout system.net.httpwebrequest

我知道WebRequest.Timeout设置了请求的超时,但似乎只有在服务器开始响应之前才会强制执行。

如果我想在服务器发送一些数据然后停止响应时超时,我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用...Async版本的读取调用,并使用超时时间调用Task.Wait(int)

var response = request.GetResponse();
var responseStream = response.GetResponseStream();
using (StreamReader reader = new StreamReader(responseStream )) {
    var task = reader.ReadLineAsync();
    if (!task.Wait(1000)) {
        throw new Exception("Timed out after 1 sec.");
    }
    string line = task.Result;
    // etc....
}