HttpClient.PostAsync方法的行为是处理提供的HttpContent对象.
有许多方法可以解决这种问题,包括HttpContent为客户端上的每个调用构建一个new ,或者将内容加载到流中并更改指针.
我想知道为什么调用此方法会自动调用其IDisposable参数的处理?据我所知,这不是.NET中的常见行为
还值得注意的是,这种行为也在PUT请求中被观察到,这是幂等的,因此这种行为是为了防止再次发送信息的前提似乎不正确.
在C#中,我启用了跟踪和网络跟踪源.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.diagnostics>
<sources>
<source name="System.Net" tracemode="includehex" maxdatasize="1024">
<listeners>
<add name="System.Net"/>
</listeners>
</source>
</sources>
<switches>
<add name="System.Net" value="Verbose"/>
</switches>
<sharedListeners>
<add name="System.Net"
type="TraceTest.StringWriterTraceListener, TraceTest"
initializeData="myfile.log"
/>
</sharedListeners>
<trace autoflush="true" indentsize="4" />
</system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但是更长的消息被截断(长度像12Kb/30行,不长就像1GB!)所以我最终会遇到只记录部分web reqiest标头的情况.
如何解决?
或者您是否知道一本书或一些资源可以非常详细地解释.Net跟踪和调试?
日志示例:
System.Net Information: 0 : [1204] Connection#63291458 - Received headers
{
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=10
Content-Type: text/html; charset=windows-1251
Date: Mon, 04 Jul 2016 17:50:33 GMT
Set-Cookie: uid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; …Run Code Online (Sandbox Code Playgroud)