部署在Azure WebApp上的.NET 6应用上传大文件报HTTP 413错误
Azure上.NET 6应用大文件上传失败的解决方案
问题背景
向部署在Azure的.NET 6应用上传38MB大文件时触发**413 Request Entity Too Large(请求实体过大)**错误,本地环境通过以下两种配置可解决,但部署到Azure后失效:
已尝试的本地有效配置
- 方案1:Program.cs中配置服务器请求限制
builder.Services.Configure<KestrelServerOptions>(options => { options.Limits.MaxRequestBodySize = long.MaxValue; }); builder.Services.Configure<IISServerOptions>(options => { options.MaxRequestBodySize = long.MaxValue; }); - 方案2:Startup.cs中配置表单选项
services.Configure<FormOptions>(options => { options.MultipartBodyLengthLimit = long.MaxValue; });
Azure环境下的必做配置
Azure App Service存在平台级的额外限制,需补充以下配置才能生效:
1. 添加/修改web.config
针对Azure App Service默认的IIS托管环境,在web.config中添加请求长度限制:
<configuration> <system.web> <!-- 单位为KB,40960对应40MB,可按需调整 --> <httpRuntime maxRequestLength="40960" /> </system.web> <system.webServer> <security> <requestFiltering> <!-- 单位为字节,41943040对应40MB --> <requestLimits maxAllowedContentLength="41943040" /> </requestFiltering> </security> </system.webServer> </configuration>
2. 配置Azure App Service应用设置
在Azure门户进入你的App Service,依次打开配置 > 应用设置,添加以下配置项:
- 名称:
MAX_REQUEST_BODY_SIZE,值设为41943040(或更大值,对应40MB)
3. 验证接口特性配置
确保上传接口未设置过小的请求限制,可添加RequestSizeLimit特性放宽限制:
[HttpPost("upload")] [RequestSizeLimit(long.MaxValue)] public async Task<IActionResult> Upload(IFormFile file) { // 你的上传逻辑 }
说明
本地环境仅需代码层面配置即可生效,但Azure App Service受IIS平台限制和应用服务全局设置约束,必须同时调整代码、web.config和Azure门户设置,才能彻底解除大文件上传限制。
内容的提问来源于stack exchange,提问作者Ronak
相关产品推荐
相关产品推荐

