HttpClient.PostAsync方法的行为是处理提供的HttpContent对象。
有许多方法可以解决此问题,包括为客户端上的每个调用构造一个新的HttpContent
或将内容加载到流中并更改指针。
我想知道为什么调用此方法会自动调用对IDisposable
参数的处理?据我所知,这不是.NET中的常见现象
还要注意的是,在幂等的PUT
请求中也观察到了此行为,因此以防止再次发送信息为前提的前提似乎并不正确。
最佳答案
我无法立即在referencesource上找到实现,但是WCF源也包含它。您要查找的方法是 DisposeRequestContent(HttpRequestMessage)
,附带的注释说明了这一点:
HttpContent content = request.Content;
if (content != null)
{
content.Dispose();
}
基本上,确保您不会两次发送相同的响应(他们认为它们是不好的/不常见的/使用不周的用例)是一种安全措施。