Azure API App触发请求大小限制错误,需补充哪些配置?
问题诱因
你配置的maxAllowedContentLength参数仅用于限制请求正文(Body)的最大允许大小,本次报错是因为你将超长的HTML内容作为查询字符串参数传递,IIS默认对查询字符串长度有独立的默认限制(通常为2048字节),远小于你传入的HTML内容长度,因此触发了查询字符串长度校验失败。
所需额外配置
你需要同时完成IIS层面和ASP.NET Core层面的查询字符串长度限制配置:
- 第一步:修改Web.config配置
在requestLimits节点中新增maxQueryString、maxUrl参数配置,按需设置足够大的长度值(单位为字节,示例配置为允许最大2MB的查询字符串):<requestLimits maxAllowedContentLength="52428800" maxQueryString="2097152" maxUrl="65536" /> - 第二步:修改ASP.NET Core服务配置
在项目的Startup.cs或者Program.cs服务注册逻辑中,新增HTTP请求选项配置,放宽查询字符串大小限制:
如果使用Kestrel托管,还需要同步配置Kestrel的查询字符串限制:// .NET 5 Startup.cs 示例 public void ConfigureServices(IServiceCollection services) { services.Configure<HttpOptions>(opt => { opt.MaxQueryStringSize = 2097152; // 对应设置为2MB,与Web.config配置保持一致 }); // 原有其他服务注册逻辑 }public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(serverOptions => { serverOptions.Limits.MaxQueryStringSize = 2097152; }) .UseStartup<Startup>(); });
补充说明:查询字符串本身不适合传递超长文本内容,浏览器、代理服务器也可能对查询字符串长度有额外限制,建议调整接口逻辑,改用POST请求将HTML内容放在请求正文中传递,兼容性更好。
内容的提问来源于stack exchange,提问作者Jaish Mathews
相关产品推荐
相关产品推荐

