大 HttpWebRequest 文章或.NET framework 4.5 所根據的 PUT 記憶體最佳化

狀況

當 HTTP POST 傳送大量資料的情況下,您在使用Ht的tpWebRequest類別,或將要求,要求可能會失敗正在執行 Microsoft.NET Framework 的電腦上。此外,您可能會收到記憶體不足例外狀況。

您可能會發現使用HttpWebRequest類別的應用程式會耗用許多記憶體。當您使用效能監視器監視使用HttpWebRequest類別的應用程式時,私用位元組計數會繼續增加送出資料。

原因

因為.NET Framework 緩衝處理輸出的資料依預設使用HttpWebRequest類別時,就會發生這個問題。KB 文章的文件原始的問題。

解決方案

若要解決這個問題,請設定 [ HttpWebRequest.AllowWriteStreamBuffering ] 屬性設為 false。透過這種方式,輸出的資料 (實體主體) 的文章或 PUT 要求不會緩衝記憶體中。

在早於 4.5 Microsoft.NET Framework 版本中,HttpWebRequest.AllowWriteStreamBuffering 屬性設定為 false 會有時導致錯誤時將資料上載至已驗證的端點。例如,您可能會遇到與 「 此要求需要資料緩衝,成功 」 訊息的 System.Net.WebException。但是在深入查看例外狀況相關聯的回應實際上會指出 System.Net.HttpStatusCode.Unauthorized (401) 狀態碼。KB 文章的文件預先驗證和處理 401 回應 KeepAlive 連線因應的措施。

與 Microsoft.NET Framework 1.1、 2.0、 3.0、 3.5 和 4.0,不同的是 Microsoft.NET Framework 4.5 會新增新的設計功能, HttpWebRequest.AllowWriteStreamBuffering屬性。新的功能可以直接處理驗證案例中,只要啟用 Expect100Continue 功能。預設的ServicePointManager.Expect100Continue值為true。

更多的資訊

如需有關 Microsoft.NET Framework 1.1、 2.0、 3.0、 3.5 和 4.0 為基礎的HttpWebRequest.AllowWriteStreamBuffering方案的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰
A 張貼或放入要求可能會失敗時正在執行.NET Framework 的電腦上傳送大量資料的情況下,您在使用 HttpWebRequest 類別

如需HttpWebRequest.AllowWriteStreamBuffering屬性的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站︰


如需ServicePointManager.Expect100Continue屬性的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站︰



Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×