httpwebrequest - .NET HttpClient在多个请求后挂起(除非Fiddler处于事件状态)

标签 httpwebrequest dotnet-httpclient

我正在使用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;
}

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

如果问题的原因相同,我认为我需要对HttpClient进行更多操作,以使其在每次请求后完全释放其资源,但是我找不到任何显示该操作方法的代码示例。

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

非常感谢,

提姆

最佳答案

您不会处理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;
    }
}

关于httpwebrequest - .NET HttpClient在多个请求后挂起(除非Fiddler处于事件状态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14095545/

相关文章:

javascript - 如何仅使用 javascript(不使用 Jquery)序列化对象?

c# - 未发送 HttpClient 身份验证 header

c# - HttpClient 重定向后不发送基本身份验证

c# - WebClient多线程响应

.net - 在 ASP.NET 中接收 POST 数据

c# - WebRequest 与代理到 whatsmyip.net 显示我的真实 ip

c# - HttpWebRequest 正确的异常处理

c# - ASP.NET WebAPI : how to perform a multipart post with file upload using WebApi HttpClient

c# - 在 Windows 8 应用程序中使用 HttpClient 的并行 HTTPRequest

c# - HttpClient 收到服务器响应后停止推流失败