ASP.NET Core大文件上传接口部署服务器后特性配置不生效求助
大文件上传部署后失败排查配置项
- Kestrel 服务端全局限制配置
就算接口加了请求大小特性,如果代码全局配置了Kestrel的请求上限依旧会被拦截,可在Program.cs中添加以下配置:
// .NET 6及以上版本示例 var builder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel(options => { // 设为null取消全局请求大小限制,也可指定字节数值限制大小 options.Limits.MaxRequestBodySize = null; });
- IIS 托管场景配置
如果用IIS部署,需要修改站点根目录的web.config文件,添加IIS层面的请求大小限制:
<configuration> <system.webServer> <security> <requestFiltering> <!-- 示例为允许最大2GB请求,单位为字节,可按需调整 --> <requestLimits maxAllowedContentLength="2147483648" /> </requestFiltering> </security> </system.webServer> <system.web> <!-- 适配旧版IIS,单位为KB,示例对应2GB,同时延长执行超时时间 --> <httpRuntime maxRequestLength="2097152" executionTimeout="3600" /> </system.web> </configuration>
修改后还要检查IIS站点的「请求筛选」功能设置,避免站点级别的配置覆盖web.config规则。
- Nginx/Apache 反向代理场景配置
如果用Nginx做反向代理,默认请求大小限制为1M,需要修改Nginx配置文件:
# 可配置在http块全局生效,也可放到server或location块对应站点/接口单独生效 client_max_body_size 2G; # 延长超时时间,避免大文件上传过程中断连 proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_read_timeout 600s;
如果用Apache,修改httpd.conf或者站点.htaccess文件:
# 允许最大2GB请求,单位为字节 LimitRequestBody 2147483648
- 容器/云服务场景配置
如果用容器部署,需要检查容器编排工具(如K8s)的Ingress网关请求大小限制,K8s Ingress Nginx同样需要配置client_max_body_size参数。
如果使用了云厂商的负载均衡、WAF、CDN等中间服务,需要检查对应产品的请求大小限制和上传超时配置,这类边缘网关的限制优先级最高,会直接拦截超阈值请求。
内容的提问来源于stack exchange,提问作者Sang
相关产品推荐
相关产品推荐

