WebHostBuilder、 IWebHost、 ,並在 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。
使用 IWebHost 或 WebHost 產生具有診斷 ID ASPDEPR008的編譯器警告:
警告ASPDEPR008:WebHost 已過時。 請改用 HostBuilder 或 WebApplicationBuilder。 如需詳細資訊,請瀏覽:https://aka.ms/aspnet/deprecate/008。
破壞性變更的類型
此變更可能會影響 來源相容性。
變更的原因
HostBuilder 並 WebApplication 具備未來投資的所有特點 WebHostBuilder 。
WebHostBuilder 在 ASP.NET Core 3.0 中被通用主機取代,並且在 ASP.NET Core 6.0 中引入了最少的 WebApplicationBuilder API。 這些較新的裝載模型可讓您與 .NET 生態系統更好地整合,並且是新應用程式的建議方法。
建議的動作
從 WebHostBuilderHostBuilder 或 WebApplication:
對於需要完整裝載功能的應用程式,請移轉至
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
- Microsoft.AspNetCore.Hosting.WebHostBuilder
- Microsoft.AspNetCore.Hosting.IWebHost
- Microsoft.AspNetCore.WebHost