.Net6/.Net8(.Net Core) IIS中部署 使用 IFormFile 上传大文件报错解决方案
描述
最近使用.Net6 WebAPI IFormFile对象接收上传文件时大于30MB(兆)的文件就会报错
原因分析
IIS上传文件有大小默认限制大约28.6MB
解决办法
.无论是Net6还是.Net8写法都一样
方法一:IIS可视化操作
1.打开Internet Information Services (llS)管理器,选中主页
2. 双击打开请求筛选
3. 点击编辑功能设置
4.修改允许的最大内容长度(字节)的值,默认值为30000000字节(除以两次1024单位换算后约28.6MB),我这里修改为:2147483647 大约2G,此时上传文件大小在2G内就可以上传成功


方法二:修改.Net Core项目发布后web.config文件(个人推荐)
<system.webServer>
<security>
<requestFiltering>
<!-- Handle requests up to 2 GB -->
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>
web.config示例截图如下

上面方法任选其一即可
.Net Core代码如下:
上面IIS请求筛选配置完后项目Program中加入以下代码:
var builder = WebApplication.CreateBuilder(args); //修改FormOptions(用于将读取请求正文配置为 HTTP 窗体的选项)配置 builder.Services.Configure<FormOptions>(options => { options.MultipartBodyLengthLimit = int.MaxValue; //每个多部分主体的长度限制,默认值约为128MB 当前为2G options.ValueCountLimit = int.MaxValue; //要允许的表单条目数限制,默认为 1024个 当前为2147483647个 options.ValueLengthLimit = int.MaxValue; //单个窗体值的长度限制 大约为 4MB 当前为2G }); //为 ASP.NET Core Kestrel Web 服务器配置选项 builder.Services.Configure<KestrelServerOptions>(options => { options.Limits.MaxRequestBodySize = int.MaxValue; // 默认大约为 28.6MB 当前为2G }); //为 IIS 进程内提供配置 builder.Services.Configure<IISServerOptions>(options => { options.MaxRequestBodySize = int.MaxValue; // 默认大约为 28.6MB 当前为2G });
参考资料
https://www.cnblogs.com/qingheshiguang/p/18017910

浙公网安备 33010602011771号