运行Web API模板项目时出现Error 431错误求助
解决方案
HTTP Error 431 是请求头字段或请求行超出服务器限制导致的,Kestrel 默认的请求头大小限制比 IIS Express 更严格,所以会出现这种运行差异。可以通过以下两种方法调整 Kestrel 的配置来解决:
方法1:通过代码配置 Kestrel
在项目的 Program.cs 中添加 Kestrel 请求限制配置:
var builder = WebApplication.CreateBuilder(args); // 配置Kestrel请求大小限制 builder.WebHost.ConfigureKestrel(serverOptions => { // 增大请求头总大小限制为64KB(默认值为32KB) serverOptions.Limits.MaxRequestHeadersTotalSize = 65536; // 若存在请求行过长的情况,可同步调整此值 serverOptions.Limits.MaxRequestLineSize = 65536; }); // 保留项目原有代码 builder.Services.AddControllers(); // ... var app = builder.Build(); // ...中间件配置... app.Run();
方法2:通过配置文件调整
在 appsettings.json 中添加 Kestrel 的限制配置项:
{ "Kestrel": { "Limits": { "MaxRequestHeadersTotalSize": 65536, "MaxRequestLineSize": 65536 } }, // 保留项目原有配置内容 }
调整完成后重启 Kestrel 服务即可解决431错误。如果仍有问题,可以进一步检查请求中是否包含过大的自定义请求头或Cookie,必要时可适当调大上述配置数值。
内容的提问来源于stack exchange,提问作者Joe Schmucker
相关产品推荐
相关产品推荐

