Nguon: Microsoft Learn · .NET 8.0

WebHostBuilder, IWebHost và WebHost đã lỗi thời

Nguồn: WebHostBuilder, IWebHost, and WebHost are obsolete

WebHostBuilder, IWebHostWebHost đã được đánh dấu là lỗi thời trong .NET 10. WebHostBuilder đã được thay thế bởi HostBuilder (generic host - máy chủ chung) trong ASP.NET Core 3.0, và WebApplicationBuilder được giới thiệu trong ASP.NET Core 6.0. Những giải pháp thay thế mới hơn này là nơi sẽ diễn ra các đầu tư trong tương lai.

Phiên bản được giới thiệu

.NET 10 RC 1

Hành vi trước đây

Trước đây, bạn có thể sử dụng WebHostBuilder để cấu hình và xây dựng web host mà không có bất kỳ cảnh báo nào tại thời điểm biên dịch.

Hành vi mới

Bắt đầu từ .NET 10, việc sử dụng WebHostBuilder sẽ tạo ra cảnh báo trình biên dịch với ID chẩn đoán ASPDEPR004:

warning ASPDEPR004: WebHostBuilder is deprecated in favor of HostBuilder and WebApplicationBuilder. For more information, visit https://aka.ms/aspnet/deprecate/004.

Việc sử dụng IWebHost hoặc WebHost sẽ tạo ra cảnh báo trình biên dịch với ID chẩn đoán ASPDEPR008:

warning ASPDEPR008: WebHost is obsolete. Use HostBuilder or WebApplicationBuilder instead. For more information, visit https://aka.ms/aspnet/deprecate/008.

Loại thay đổi vi phạm

Thay đổi này có thể ảnh hưởng đến khả năng tương thích nguồn (source compatibility).

Lý do thay đổi

HostBuilderWebApplication có tất cả các tính năng của WebHostBuilder và là trọng tâm của đầu tư trong tương lai. WebHostBuilder đã được thay thế bởi generic host trong ASP.NET Core 3.0, và minimal APIs (API tối giản) với WebApplicationBuilder được giới thiệu trong ASP.NET Core 6.0. Những mô hình hosting (lưu trữ) mới hơn này cung cấp sự tích hợp tốt hơn với hệ sinh thái .NET và là cách tiếp cận được khuyến nghị cho các ứng dụng mới.

Hành động được khuyến nghị

Di chuyển từ WebHostBuilder sang HostBuilder hoặc WebApplication:

Trước:

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

Sau:

```csharp 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(); ```

Các API bị ảnh hưởng