c# – 使用Asp.Net MVC和IIS上传大于3GB的文件

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

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

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

我在web.config文件中有以下属性:

的maxRequestLength = “5097151”,

requestLengthDiskThreshold = “50971”,

maxAllowedContentLength = “4242880000”.

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

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

最佳答案 更新

似乎即使在.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托管服务器的唯一方法是将其分成几块并逐段上传.以下是可以将文件上传到段中的客户端:

> IT Hit Ajax File Browser
> Sample WebDAV Browser

请注意,这些客户端要求您的服务器支持带有Range标头的PUT.

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

source

点赞