【发布时间】:2013-08-14 11:56:59
【问题描述】:
我正在尝试在 Windows Phone 应用程序中将超时设置为 HttpClient 对象。但是如果请求在超时之前没有完成,GetAsync 永远不会返回值。
我正在使用以下代码来获得响应:
HttpClientHandler handler = new HttpClientHandler();
HttpClient client = new HttpClient(handler);
client.Timeout = TimeSpan.FromSeconds(5);
client.BaseAddress = new Uri("http://www.foo.com");
HttpResponseMessage response = await client.GetAsync("/boo.mp3");//<--Hangs
byte[] data = await response.Content.ReadAsByteArrayAsync();
如何正确设置超时以从 GetAsync 获取结果?
【问题讨论】:
-
你到底是怎么调用这个方法的?你用的不是
Wait()或Result? -
我也有类似的问题。就我而言,我已经 try..catch() 包裹了任务中的所有内容,在多个级别上,以及所有日志,甚至在每个步骤之间。我有返回任务的方法,然后我登录,然后我 .Wait() 就可以了。我正在使用默认超时(我猜是 100 秒?)。如果 Web 服务响应 GetAsync() 调用的时间过长,则它永远不会返回。它没有遇到任何问题。它不会命中下一行(这是一个日志)。它只是永远挂起。
标签: c# windows-phone-8 async-await dotnet-httpclient