在 .NET 6 启动中配置 Kestrel 服务器选项

bra*_*ndo 14 c# kestrel-http-server asp.net-core asp.net-core-6.0 .net-6.0

我正在将 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();
Run Code Online (Sandbox Code Playgroud)

应用程序启动崩溃并出现以下异常:

System.NotSupportedException:WebApplicationBuilder.Host 不支持ConfigureWebHost()。请改用 WebApplicationBuilder.Build() 返回的 WebApplication。

如果我删除与ConfigureWebHostDefaults相关的任何内容,那么应用程序启动就没有问题。我无法弄清楚如何使用新的 .net6 Kestrel 服务器启动配置。

Gur*_*ron 20

迁移指南的代码示例涵盖了这一点。UseKestrel您应该在构建器上使用WebHost

builder.WebHost.UseKestrel(so =>
{
    so.Limits.MaxConcurrentConnections = 100;
    so.Limits.MaxConcurrentUpgradedConnections = 100;
    so.Limits.MaxRequestBodySize = 52428800;
});
Run Code Online (Sandbox Code Playgroud)

  • 我花了太长时间才弄清楚 `builder.WebHost.UseSentry();` 哈哈,谢谢!我还尝试使用 `builder.Host.ConfigureWebHostDefaults(builder => { });` (2认同)