Ứng dụng web ASP.NET Core thực tế là một dự án console bắt đầu thực thi từ điểm vào public static void Main() trong lớp Program nơi chúng ta có thể tạo một host cho ứng dụng web.
public class Program{
public static void Main(string[] args){
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
WebHost là một lớp tĩnh có thể dùng để tạo thể hiện của IWebHost và IWebHostBuilder với các giá trị mặc định đã cấu hình sẵn.
Phương thức CreateDefaultBuilder() tạo thể hiện mới của WebHostBuilder với các mặc định đã cấu hình sẵn. Bên trong,
nó cấu hình Kestrel, IISIntegration và các cấu hình khác. Dưới đây là phương thức CreateDefaultBuilder():
- Đặt "Content Root" là thư mục hiện tại
- Cho phép đối số dòng lệnh được đẩy vào đối tượng cấu hình
- Thêm cả appsettings.json và appsettings.{Environment}.json để tải vào đối tượng cấu hình
- Thêm biến môi trường vào đối tượng cấu hình
- Nếu ở môi trường Development, cho phép tải secrets
- Thêm logger Console/Debug
- Báo cho app dùng Kestrel và tải cấu hình Kestrel từ config đã tải
- Thêm Routing
- Thêm IIS Integration
Khi muốn host ứng dụng vào IIS, cần thêm phương thức UseIISIntegration() chỉ định IIS là máy chủ web bên ngoài.
UseStartup<Startup>() chỉ định lớp Startup được dùng bởi web host. Chúng ta cũng có thể chỉ định lớp tùy chỉnh thay cho Startup.
Build() trả về thể hiện IWebHost và Run() khởi động ứng dụng web cho đến khi dừng.