Dot-Net
為什麼 HttpClient.PostAsync 和 PutAsync 處理內容?
HttpClient.PostAsync方法的行為是處置提供的HttpContent對象。
有很多方法可以繞過這種行為,包括
HttpContent為客戶端上的每個呼叫構造一個新的,或者將內容載入到流中並更改指針。我想知道為什麼呼叫此方法會自動呼叫其
IDisposable參數的處置?據我所知,這不是 .NET 中的常見行為還值得注意的是,這種行為在
PUT請求中也有觀察到,它是冪等的,所以這種行為是為了防止資訊再次發送的前提似乎並不正確。
我無法立即在 referencesource 上找到實現,但 WCF 源也包含它。您正在尋找的方法是
DisposeRequestContent(HttpRequestMessage),隨附的評論說:當請求完成時,
HttpClient釋放請求內容,這樣使用者就不必這樣做了。這也確保了一個對HttpContent像只發送一次使用HttpClient(類似於HttpRequestMessages也可以只發送一次)。HttpContent content = request.Content; if (content != null) { content.Dispose(); }基本上,這是一種保障措施,以確保您不會兩次發送相同的響應,因為他們認為這是一個糟糕/不常見/不鼓勵的案例。