共用方式為


WebHostBuilder、IWebHost 和 WebHost 已過時

WebHostBuilderIWebHost、 ,並在 WebHost .NET 10 中標示為過時。 WebHostBuilder在 ASP.NET Core 3.0中被(通用主機)取代HostBuilder,並在 WebApplicationBuilder ASP.NET Core 6.0中引入。 這些較新的替代方案是未來投資發生的地方。

推出的版本

.NET 10 RC 1

先前的行為

以前,您可以使用來 WebHostBuilder 設定和建置 Web 主機,而不會出現任何編譯時間警告。

新行為

從 .NET 10 開始,使用 會產生 WebHostBuilder 具有診斷識別碼 ASPDEPR004的編譯器警告:

警告 ASPDEPR004:WebHostBuilder 已被取代,取而代之的是 HostBuilder 和 WebApplicationBuilder。 如需詳細資訊,請瀏覽:https://aka.ms/aspnet/deprecate/004

使用 IWebHostWebHost 產生具有診斷 ID ASPDEPR008的編譯器警告:

警告ASPDEPR008:WebHost 已過時。 請改用 HostBuilder 或 WebApplicationBuilder。 如需詳細資訊,請瀏覽:https://aka.ms/aspnet/deprecate/008

破壞性變更的類型

此變更可能會影響 來源相容性

變更的原因

HostBuilderWebApplication 具備未來投資的所有特點 WebHostBuilderWebHostBuilder 在 ASP.NET Core 3.0 中被通用主機取代,並且在 ASP.NET Core 6.0 中引入了最少的 WebApplicationBuilder API。 這些較新的裝載模型可讓您與 .NET 生態系統更好地整合,並且是新應用程式的建議方法。

WebHostBuilderHostBuilderWebApplication

  • 對於需要完整裝載功能的應用程式,請移轉至 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();
    
  • 對於新應用程式,尤其是那些使用最少 API 的應用程式,請移轉至 WebApplicationBuilder

受影響的 API

另請參閱