需要上传一些大文件到服务器,文件的大小比较的大,默认的配置不支持这个大小,需要配置处理。当然大文件上传只适合需求量少的场景,量大需要采取其他技术方案,否则太占带宽了。
IIS 部署 方式
在项目的根目录添加web.config
<system.webServer>
<security>
<requestFiltering>
<!-- Handle requests up to near 4GB -->
<requestLimits maxAllowedContentLength="4294967295" />
</requestFiltering>
</security>
</system.webServer>
上面的设置的数值 4294967295 是无符号int的最大值,不能比这个大了接近4GB,再大就报错了。
同时在startup的ConfigureServices添加以下内容
services.Configure<FormOptions>(config =>
{
config.MultipartBodyLengthLimit = UInt32.MaxValue;
});
以上可以处理
kestrel部署方案
program中设置以下,这里我直接设置了null,当然一般情况下给个合适的数值
ConfigureKestrel(option => {
option.Limits.MaxRequestBodySize = null;
})
同时在startup的ConfigureServices添加以下内容,这里我也个了无符号的最大值,有其他需求可以改成long的最大值,但一般用不着
services.Configure<FormOptions>(config =>
{
config.MultipartBodyLengthLimit = UInt32.MaxValue;
});
总结iis部署一次性上传只能给到接近4GB的上传,kestrel能够更自由扩展,但总归不要太大否则还是采取其他技术手段比如断点续传等,避免网络不稳定因素造成的上传失败概率。