.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

https://blog.csdn.net/weixin_44909642/article/details/136137773#:~:text=The%20default%20request%20limit%20%28maxAllowedContentLength%29%20is,30%2C000%2C000%20bytes%2C%20which%20is%20approximately%2028.6MB.

https://www.cnblogs.com/viazure/p/12712482.html

https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.aspnetcore.http.features.formoptions?view=aspnetcore-8.0 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值