Ben*_*min 5 c# iis asp.net-mvc upload asp.net-web-api
我的 MVC 应用程序中有一个HTTP PUT Web API 方法,该方法从客户端接收文件并将其放入服务器存储。
由于文件大小可能很大,我不会将文件流式传输到内存中以避免内存越界异常,因此我使用MultipartFormDataStreamProvider将其加载到临时文件夹中,并稍后将其移动到最终目的地。
除了不能上传大于 2097148 KB (2.097GB) 的文件之外,一切都运行良好。一旦我提供的文件大于该值,它就会开始在 Temp 文件夹中传输该文件,然后在文件大小达到 2097148 KB 时停止。
我的 web.config 文件中有以下属性:
最大请求长度=“5097151”,
requestLengthDiskThreshold =“50971”,
maxAllowedContentLength =“4242880000”。
另外,在 IIS 中,我已将允许的最大内容长度(字节)设置为 4242880000 KB。
还有其他地方可能会导致这种情况发生吗?
更新
似乎即使在带有 .NET 4.6.1 的 IIS 10 下,请求也会被拒绝(400 错误请求),即使所有限制都设置为允许它。
进一步挖掘,这似乎已被微软拒绝。
在 .Net 4.0 及更早版本中,ASP.NET 存在 2Gb 限制,该限制已在 .Net 4.5 中修复。不过这个修复还是有一定意义的,因为 IIS 本身不支持超过 2Gb 的文件上传。
将超过 2Gb 的文件上传到 IIS 托管服务器的唯一方法是将其分成多个部分并逐个上传。以下是可以上传将文件分成多个片段的客户端:
请注意,这些客户端要求您的服务器支持带有 Range 标头的 PUT。
另一个解决方案是创建一个基于 HttpListener 的服务器。与 IIS 相比,HttpListener 的功能要少得多,但它没有任何上传限制。
| 归档时间: |
|
| 查看次数: |
2415 次 |
| 最近记录: |