Phương thức Configure nằm bên trong lớp Startup của ứng dụng ASP.NET Core.
Phương thức Configure là nơi bạn cấu hình application request pipeline cho ứng dụng của mình sử dụng instance IApplicationBuilder được cung cấp bởi built-in IoC container.
Phương thức Configure mặc định có ba tham số: IApplicationBuilder, IWebHostEnvironment và ILoggerFactory.
Tại runtime, phương thức ConfigureServices được gọi trước phương thức Configure. Điều này để đăng ký custom service với IoC container mà có thể được dùng trong phương thức Configure.
- IWebHostEnvironment: Cung cấp thông tin về web hosting environment ứng dụng đang chạy.
- IApplicationBuilder: Định nghĩa class cung cấp cơ chế để cấu hình request pipeline của ứng dụng.
Ví dụ
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
} else {
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints => {
endpoints.MapRazorPages();
});
}
Thứ tự Middleware quan trọng
Thứ tự đăng ký middleware trong Configure quyết định thứ tự xử lý request:
- Exception Handling (UseDeveloperExceptionPage / UseExceptionHandler) - Đầu tiên để bắt lỗi từ các middleware sau
- HTTPS Redirection (UseHttpsRedirection)
- Static Files (UseStaticFiles) - Phục vụ file tĩnh trước routing
- Routing (UseRouting) - Xác định endpoint
- Authentication (UseAuthentication) - Xác thực user
- Authorization (UseAuthorization) - Phân quyền
- Endpoints (UseEndpoints) - Thực thi endpoint (Controller, Razor Pages, v.v.)
Cấu hình theo Environment
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
// Chỉ dùng trong Development
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();
}
// Chỉ dùng trong Staging/Production
else if (env.IsStaging()) {
app.UseExceptionHandler("/Error/Staging");
app.UseHsts();
}
else {
app.UseExceptionHandler("/Error");
app.UseHsts();
}
// Chung cho mọi environment
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints => {
endpoints.MapControllers();
endpoints.MapRazorPages();
});
}
IWebHostEnvironment hữu ích
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
// Kiểm tra environment
bool isDev = env.IsDevelopment();
bool isStaging = env.IsStaging();
bool isProd = env.IsProduction();
bool isCustom = env.IsEnvironment("Testing");
// Lấy đường dẫn
string contentRoot = env.ContentRootPath;
string webRoot = env.WebRootPath; // wwwroot
// Environment name
string envName = env.EnvironmentName; // "Development", "Production", v.v.
}