我有一个托管在IIS 8.5中的c# .Net 4.5 SOAP Web服务。当此服务受到攻击时,我看到它不断将.tmp和.post文件写入此目录C:WindowsMicrosoft.NETFramework64v4.0.30319Temporary ASP.NET Fileswebservices_itcrateengine2c7c6f108cbc7b94uploads.
我在 Interwebs 上看到了详细说明如何通过web.config
中标签的 tempDirectory 属性将临时目录移动到其他地方的建议。
我还看到了一条一般建议,在大约 ~250k 上传大小时,ASP.Net 将写入这些 .tmp 和 .post 文件,但我真正想知道的是我如何指定 asp.net 缓冲区通过 .tmp 和 .post 文件将数据上传到磁盘的大小?
我们全天有很多 POST 到这个网络服务,每小时数千个,大小从 1k-1mb 不等。这些计算机具有足够的内存,因此,如果我可以更改 .Net 用于缓冲到磁盘的阈值,我希望物理磁盘上的负载会轻得多,因为我认为不必要的 IO。
有没有人知道如何设置上传大小阈值,ASP.Net 该阈值将用于确定是否创建这些临时 .post 和 .tmp 文件?谢谢你的时间。
Asp.net File Upload 使用 HttpPostedFile 从流中保存文件。来自 msdn 文档
文件以 MIME 多部分/表单数据格式上传。默认情况下,所有 请求,包括表单域和上传的文件,大于 256 KB 缓冲到磁盘,而不是保存在服务器内存中。
也关于缓冲区
在服务器内存中为请求缓冲的数据量, 其中包括文件上传,可以通过访问 RequestLengthDiskThreshold 属性或通过设置httpRuntime 元素的 requestLengthDiskThreshold属性 (ASP.NET 设置架构(元素或 网络配置文件。
通过调整 MaxRequestLength 和RequestLengthDiskThreshold属性,可以微调服务器的性能
因此,您可以在 web.config 中使用更高的设置,例如 1024 Kb
<httpRuntime requestLengthDiskThreshold = "1024"
指定输入流缓冲阈值的限制(以 KB 为单位(。此外,此值不应超过 maxRequestLength 属性。