2017-07-26 60 views
0

我有一個IIS 8.5中託管的c#.Net 4.5 SOAP Web服務。由於這種服務需要點擊我已經看到了它不斷地寫.tmp和.POST文件到該目錄C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\webservices_itcrateengine\2c7c6f10\8cbc7b94\uploads.ASP.Net Web服務:爲大型郵件預防.tmp和.post文件

我見過的Interwebs諮詢詳細介紹瞭如何通過標籤的tempDirectory屬性移到別的地方臨時目錄中web.config
我也看到了一個普遍的建議,即在大約250k左右的上傳大小時,ASP.Net會寫這些.tmp和.post文件,但我真正想知道的是如何指定大小asp.net通過.tmp和.post文件緩衝上傳數據到磁盤?
我們每天都有很多POST到這個網絡服務,每個小時數千個,大小從1k-1mb不等。這些機器具有足夠的內存,所以如果我可以改變閾值.Net用於緩衝到磁盤,我希望物理磁盤上的負載更輕,因爲我認爲不必要的IO。
是否有人知道如何設置上傳大小閾值,ASP.Net將使用它來確定是否創建這些臨時.post和.tmp文件?謝謝你的時間。

回答

1

Asp.net文件上傳使用HttpPostedFile將文件從stream.From保存msdn文檔

文件中MIME的multipart/form-data的格式上傳。默認情況下,大於256 KB 的所有 請求(包括表單字段和上載文件)都會緩存到磁盤,而不是保存在服務器內存中。

也有關緩衝區

,其包括文件上傳,可以通過訪問 RequestLengthDiskThreshold屬性或通過設置 指定了在服務器存儲器緩衝的一個請求的數據量, requestLengthDiskThreshold Machine.config或 Web.config文件中的httpRuntime元素 (ASP.NET設置架構)元素的屬性。

通過調整的maxRequestLengthRequestLengthDiskThreshold屬性,您可以微調您的服務器的性能

所以,你可以在你的web.config有更高的設置如1024 Kb

<httpRuntime requestLengthDiskThreshold = "1024" 

指定輸入流緩衝閾值的限制值(以千字節爲單位)。此外,此值不應超過maxRequestLength屬性。

+0

謝謝Rohith,您對設置requestLengthDiskThreshold的建議完美運行。我們向Web服務提供的最大1MB大POST不再導致創建.tmp和.post文件。 – Peeticus