9

System.Net.Http.HttpClient用于将来自控制台应用程序的一系列请求发布到 REST API,并将 JSON 响应反序列化为强类型对象。我的实现是这样的:

using (var client = new HttpClient())
{
    var content = new StringContent(data, Encoding.UTF8, "text/html");
    var response = client.PostAsync(url, content).Result;

    response.EnsureSuccessStatusCode();

    return response.Content.ReadAsAsync<MyClass>().Result;
}

但是,我遇到了一个与此问题中描述的问题非常相似的问题,即当请求通过 Fiddler 路由时一切正常,但当 Fiddler 被禁用时,它在第 4 或第 5 个请求后挂起。

如果问题的原因是相同的,我认为我需要做更多的事情HttpClient来让它在每次请求后完全释放其资源,但我无法找到任何代码示例来说明如何做到这一点。

希望有人能指出我正确的方向。

非常感谢,

蒂姆

4

1 回答 1

12

您没有处理该HttpResponseMessage对象。这可以将打开的流留给服务器,并且在单个服务器的一些流配额被填充后,将不再发送请求。

using (var client = new HttpClient())
{
    var content = new StringContent(data, Encoding.UTF8, "text/html");
    using(var response = client.PostAsync(url, content).Result)
    {    
        response.EnsureSuccessStatusCode();
        return response.Content.ReadAsAsync<MyClass>().Result;
    }
}
于 2012-12-31T15:10:11.323 回答