Udostępnij przez


WebHostBuilder, IWebHost i WebHost są przestarzałe

WebHostBuilder, IWebHosti WebHost zostały oznaczone jako przestarzałe na platformie .NET 10. WebHostBuilder został zastąpiony przez HostBuilder (hosta ogólnego) w ASP.NET Core 3.0 i WebApplicationBuilder został wprowadzony w ASP.NET Core 6.0. Te nowsze alternatywy to miejsca, w których nastąpią przyszłe inwestycje.

Wersja wprowadzona

.NET 10 RC 1

Poprzednie zachowanie

Wcześniej można WebHostBuilder było skonfigurować i skompilować hosta internetowego bez żadnych ostrzeżeń dotyczących czasu kompilacji.

Nowe zachowanie

Począwszy od platformy .NET 10, użycie polecenia WebHostBuilder tworzy ostrzeżenie kompilatora z identyfikatorem ASPDEPR004diagnostycznym :

ostrzeżenie ASPDEPR004: WebHostBuilder jest przestarzały na rzecz HostBuilder i WebApplicationBuilder. Aby uzyskać więcej informacji, zobacz https://aka.ms/aspnet/deprecate/004.

Używanie IWebHost lub WebHost tworzenie ostrzeżenia kompilatora o identyfikatorze ASPDEPR008diagnostycznym:

ostrzeżenie ASPDEPR008: Host internetowy jest przestarzały. Zamiast tego użyj programu HostBuilder lub WebApplicationBuilder. Aby uzyskać więcej informacji, zobacz https://aka.ms/aspnet/deprecate/008.

Typ zmiany przełamującej

Ta zmiana może mieć wpływ na zgodność źródła.

Przyczyna zmiany

HostBuilderi mają wszystkie cechy WebHostBuilder i WebApplication są przedmiotem przyszłych inwestycji. WebHostBuilder został zastąpiony przez hosta ogólnego w ASP.NET Core 3.0, a minimalne interfejsy WebApplicationBuilder API zostały wprowadzone w ASP.NET Core 6.0. Te nowsze modele hostingu zapewniają lepszą integrację z ekosystemem platformy .NET i są zalecanym podejściem do nowych aplikacji.

Migrowanie z WebHostBuilder do lub HostBuilderWebApplication:

  • W przypadku aplikacji, które wymagają pełnych możliwości hostingu, przeprowadź migrację do programu HostBuilder:

    Before:

    var hostBuilder = new WebHostBuilder()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseStartup()
        .UseKestrel();
    // Test code might use TestServer:
    var testServer = new TestServer(hostBuilder);
    

    After:

    using var host = new HostBuilder()
        .ConfigureWebHost(webHostBuilder =>
        {
            webHostBuilder
                .UseTestServer() // If using TestServer.
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseStartup()
                .UseKestrel();
        })
        .Build();
    await host.StartAsync();
    
    var testServer = host.GetTestServer();
    
  • W przypadku nowych aplikacji, zwłaszcza tych korzystających z minimalnych interfejsów API, przeprowadź migrację do usługi WebApplicationBuilder.

Interfejsy API, których dotyczy problem

Zobacz także