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 dùng middleware trong các ứng dụng Minimal API. Tận dụng middleware tự động trong ứng dụng Minimal API, hoặc định nghĩa middleware do người dùng cấu hình và terminal middleware (middleware đầu cuối).

Middleware có sẵn (Available Middleware)

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

Code sau là những gì middleware tự động được thêm vào ứng dụng sẽ tạo ra:

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

app.UseRouting();

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

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

// Middleware/endpoint của người dùng
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// Kết thúc middleware/endpoint 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 sửa đổi. Ví dụ, UseCors nên đượ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 nên chạy trước khi route matching (khớp tuyến đường) xảy ra, UseRouting nên được gọi và middleware nên được đặt trước lời gọi UseRouting. UseEndpoints không cần thiết trong trường hợp này vì nó được thêm tự động:

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

app.UseRouting();

// Middleware và endpoint khác

Khi thêm terminal middleware (middleware đầu cuối):

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.

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