Mat*_*hew 5 .net dispose idisposable dotnet-httpclient
HttpClient.PostAsync方法的行为是处理提供的HttpContent对象.
有许多方法可以解决这种问题,包括HttpContent为客户端上的每个调用构建一个new ,或者将内容加载到流中并更改指针.
我想知道为什么调用此方法会自动调用其IDisposable参数的处理?据我所知,这不是.NET中的常见行为
还值得注意的是,这种行为也在PUT请求中被观察到,这是幂等的,因此这种行为是为了防止再次发送信息的前提似乎不正确.
我无法立即在referencesource上找到实现,但WCF源代码也包含它.您正在寻找的方法是DisposeRequestContent(HttpRequestMessage)随附的评论说:
请求完成后,
HttpClient处理请求内容,以便用户不必这样做.这也确保了HttpContent对象仅使用一次发送HttpClient(类似于HttpRequestMessages也只能发送一次).
HttpContent content = request.Content;
if (content != null)
{
content.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
基本上,这是一个安全措施,以确保您不会发送两次相同的响应,他们认为这是一个糟糕/不常见/不鼓励的用例.