在 .NET 6 启动中配置 Kestrel 服务器选项
Posted
技术标签:
【中文标题】在 .NET 6 启动中配置 Kestrel 服务器选项【英文标题】:Configuring Kestrel Server Options in .NET 6 Startup 【发布时间】:2021-11-09 19:52:18 【问题描述】:我正在将 WebApi 从 .net5 迁移到 .net6。它进展顺利,但遇到了如何在启动期间配置 Kestrel 的问题。以下代码来自 Program.cs 文件的 Main 方法:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddVariousStuff();
builder.Host
.ConfigureWebHostDefaults(webBuilder =>
webBuilder.ConfigureKestrel(serverOptions =>
serverOptions.Limits.MaxConcurrentConnections = 100;
serverOptions.Limits.MaxConcurrentUpgradedConnections = 100;
serverOptions.Limits.MaxRequestBodySize = 52428800;
);
);
var app = builder.Build();
app.UseStuffEtc();
app.Run();
应用启动崩溃,出现以下异常:
System.NotSupportedException:WebApplicationBuilder.Host 不支持 ConfigureWebHost()。请改用 WebApplicationBuilder.Build() 返回的 WebApplication。
如果我删除了与 ConfigureWebHostDefaults 相关的任何内容,则应用程序启动没有问题。我无法弄清楚如何使用新的 .net6 Kestrel 服务器启动配置。
【问题讨论】:
【参考方案1】:迁移指南的code examples 涵盖了这一点。您应该在构建器的WebHost
上使用UseKestrel
:
builder.WebHost.UseKestrel(so =>
so.Limits.MaxConcurrentConnections = 100;
so.Limits.MaxConcurrentUpgradedConnections = 100;
so.Limits.MaxRequestBodySize = 52428800;
);
【讨论】:
我花了太长时间才弄清楚builder.WebHost.UseSentry();
哈哈谢谢!我也尝试使用builder.Host.ConfigureWebHostDefaults(builder => );
以上是关于在 .NET 6 启动中配置 Kestrel 服务器选项的主要内容,如果未能解决你的问题,请参考以下文章
为 HTTPS 配置 ASP.NET Core 2.0 Kestrel
用于 Asp.Net Core 的 Kestrel 网络服务器 - 是不是在一段时间后回收/重新加载
ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解