Tag: dotnet httpclient

HttpClient.GetAsync(…)在使用await / async时永远不会返回

编辑: 这个问题看起来可能是相同的问题,但没有回应… 编辑:在测试案例5中,任务似乎卡在WaitingForActivation状态。 我遇到一些奇怪的行为在.NET 4.5中使用System.Net.Http.HttpClient – “等待”(例如) httpClient.GetAsync(…)调用的结果将永远不会返回。 只有在使用新的异步/等待语言功能和任务API时,才会出现这种情况 – 只使用延续时,代码似乎总能工作。 下面是一些重现问题的代码 – 在Visual Studio 11中将其放入一个新的“MVC 4 WebApi项目”中,以显示以下GET端点: /api/test1 /api/test2 /api/test3 /api/test4 /api/test5 <— never completes /api/test6 这里的每个端点都返回与从未完成的/api/test5相同的数据(来自stackoverflow.com的响应头)。 我在HttpClient类中遇到了一个错误,或者我以某种方式滥用API? 代码重现: public class BaseApiController : ApiController { /// <summary> /// Retrieves data using continuations /// </summary> protected Task<string> Continuations_GetSomeDataAsync() { var httpClient = new HttpClient(); var […]

HttpClient和HttpClientHandler必须被丢弃吗?

System.Net.Http.HttpClient和System.Net.Http.HttpClientHandler在.NET Framework 4.5中实现IDisposable(通过System.Net.Http.HttpMessageInvoker )。 using说明文件说: 通常,在使用IDisposable对象时,应该在using语句中声明并实例化它。 这个答案使用这种模式: var baseAddress = new Uri("http://example.com"); var cookieContainer = new CookieContainer(); using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer }) using (var client = new HttpClient(handler) { BaseAddress = baseAddress }) { var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("foo", "bar"), new KeyValuePair<string, string>("baz", "bazinga"), }); […]