【发布时间】:2016-05-05 19:21:42
【问题描述】:
我已经写了一个使用HttpClient的方法:
private static async Task<string> DownloadString(string url)
{
var uri = new Uri(url);
using (var client = new HttpClient())
{
HttpRequestHeaders headers = client.DefaultRequestHeaders;
headers.Accept.ParseAdd("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
headers.AcceptEncoding.ParseAdd("gzip, deflate");
headers.AcceptLanguage.ParseAdd("en-US,en;q=0.5");
headers.Connection.ParseAdd("keep-alive");
headers.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0");
headers.Host = uri.Host;
return await client.GetStringAsync(uri).ConfigureAwait(false);
}
}
然后我在控制台应用程序的Main 方法中调用它,如下所示:
Console.WriteLine("Downloading");
string dom = DownloadString("http://www.shaanig.org/f8/index1.html").Result;
Console.WriteLine(dom);
如果我有互联网连接,或者它在我没有互联网连接时运行(在这种情况下,它会引发异常),则一切正常。但是,如果我在下载时断开互联网连接,它就会挂在那里。没有例外。它只是挂起。
有人可以向我解释这里发生了什么吗?我该如何解决这个问题?
【问题讨论】:
-
@DavidHaim,在尝试定义它时,我发现它在 100 秒后抛出。
-
@EmperorAiman 和当你关闭互联网时,请求开始后大约过了多少秒?
-
@DavidHaim 大约 1 秒后我将其关闭。
标签: c# dotnet-httpclient