使用Asp.Net MVC和IIS

时间:2016-07-05 04:13:06

标签: c# asp.net-mvc iis asp.net-web-api upload

我的MVC应用程序中有一个 HTTP PUT Web API方法,它从客户端接收文件并将其放入服务器存储。

由于文件大小可能很大,我没有将文件流式传输到内存中以避免内存超出绑定异常,因此我使用 MultipartFormDataStreamProvider 将其加载到临时文件夹中,然后移动它到了最后的目的地。

除了不上传大于2097148 KB(2.097GB)的文件这一事实外,一切都很完美。 一旦我提供的文件大于该文件,它就会在Temp文件夹中开始流式传输,然后一旦文件大小达到2097148 KB就会停止。

我的web.config文件中包含以下属性:

的maxRequestLength =" 5097151",

requestLengthDiskThreshold =" 50971",

maxAllowedContentLength =" 4242880000"

同样在IIS中,我将允许的最大内容长度(字节数)设置为4242880000 KB。

还有其他可能导致这种情况发生的地方吗?

1 个答案:

答案 0 :(得分:2)

<强>更新

即使在带有.NET 4.6.1的IIS 10下,似乎也拒绝了请求(400 Bad Request),即使所有限制都设置为允许它。

进一步挖掘它似乎是this has been rejected在微软。

在.Net 4.0及更早版本中,ASP.NET中存在2Gb限制,即was fixed in .Net 4.5。但是这个修复有点意义,因为IIS本身不支持超过2Gb的文件上传。

将文件通过2Gb上传到IIS托管服务器的唯一方法是将其分成几块并逐段上传。以下是可以将文件分组为段的客户端:

  1. IT Hit Ajax File Browser
  2. Sample WebDAV Browser
  3. 请注意,这些客户端要求您的服务器支持带有Range标头的PUT。

    另一种解决方案是创建基于HttpListener的服务器。与IIS相比,HttpListener的功能要少得多,但它没有任何上传限制。

    source