Nguon: Microsoft Learn · .NET 8.0

Middleware (Phần mềm trung gian) trong ứng dụng Minimal API

Nguồn: Middleware with Minimal API applications

Bài viết này mô tả cách sử dụng middleware trong ứng dụng Minimal API. Bạn có thể tận dụng automatic middleware (middleware tự động) trong ứng dụng Minimal API, hoặc định nghĩa user-configured middleware (middleware do người dùng cấu hình) và terminal middleware (middleware kết thúc).

Middleware có sẵn

WebApplication tự động thêm các middleware sau vào ứng dụng Minimal API tùy theo một số điều kiện nhất định:

Đoạn code sau đây hiệu quả là những gì automatic middleware được thêm vào ứng dụng tạo ra:

csharp
if (isDevelopment)
{
    app.UseDeveloperExceptionPage();
}

app.UseRouting();

if (isAuthenticationConfigured)
{
    app.UseAuthentication();
}

if (isAuthorizationConfigured)
{
    app.UseAuthorization();
}

// Middleware/endpoints của người dùng
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// Kết thúc middleware/endpoints của người dùng

app.UseEndpoints(e => {});

Trong một số trường hợp, cấu hình middleware mặc định không phù hợp với ứng dụng và cần chỉnh sửa. Ví dụ, UseCors phải được gọi trước UseAuthenticationUseAuthorization. Ứng dụng cần gọi UseAuthenticationUseAuthorization nếu UseCors được gọi:

csharp
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();

Nếu middleware cần chạy trước khi route matching (khớp tuyến đường) xảy ra, UseRouting phải được gọi và middleware phải được đặt trước lệnh gọi UseRouting. UseEndpoints không cần thiết trong trường hợp này vì nó được tự động thêm vào như đã mô tả trước đó:

csharp
app.Use((context, next) =>
{
    return next(context);
});

app.UseRouting();

// Các middleware và endpoints khác

Khi thêm terminal middleware:

csharp
app.UseRouting();

app.MapGet("/", () => "hello world");

app.UseEndpoints(e => {});

app.Run(context =>
{
    context.Response.StatusCode = 404;
    return Task.CompletedTask;
});

Terminal middleware là middleware chạy nếu không có endpoint nào xử lý request (yêu cầu).

Để biết thông tin về antiforgery middleware (middleware chống giả mạo) trong Minimal APIs, hãy xem Prevent Cross-Site Request Forgery (XSRF/CSRF) attacks in ASP.NET Core.