Middleware di aplikasi API Minimal
WebApplication
secara otomatis menambahkan middleware berikut tergantung Minimal API applications
pada kondisi tertentu:
UseDeveloperExceptionPage
ditambahkan terlebih dahulu ketikaHostingEnvironment
adalah"Development"
.UseRouting
ditambahkan kedua jika kode pengguna belum memanggilUseRouting
dan jika ada titik akhir yang dikonfigurasi, misalnyaapp.MapGet
.UseEndpoints
ditambahkan di akhir alur middleware jika ada titik akhir yang dikonfigurasi.UseAuthentication
ditambahkan segera setelahUseRouting
jika kode pengguna belum memanggilUseAuthentication
dan apakahIAuthenticationSchemeProvider
dapat terdeteksi di penyedia layanan.IAuthenticationSchemeProvider
ditambahkan secara default saat menggunakanAddAuthentication
, dan layanan terdeteksi menggunakanIServiceProviderIsService
.UseAuthorization
ditambahkan berikutnya jika kode pengguna belum memanggilUseAuthorization
dan apakahIAuthorizationHandlerProvider
dapat terdeteksi di penyedia layanan.IAuthorizationHandlerProvider
ditambahkan secara default saat menggunakanAddAuthorization
, dan layanan terdeteksi menggunakanIServiceProviderIsService
.- Middleware dan titik akhir yang dikonfigurasi pengguna ditambahkan antara
UseRouting
danUseEndpoints
.
Kode berikut secara efektif adalah apa yang ditambahkan middleware otomatis ke aplikasi:
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
Dalam beberapa kasus, konfigurasi middleware default tidak benar untuk aplikasi dan memerlukan modifikasi. Misalnya, UseCors harus dipanggil sebelum UseAuthentication dan UseAuthorization. Aplikasi perlu memanggil UseAuthentication
dan UseAuthorization
jika UseCors
dipanggil:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Jika middleware harus dijalankan sebelum pencocokan rute terjadi, UseRouting harus dipanggil dan middleware harus ditempatkan sebelum panggilan ke UseRouting
. UseEndpoints tidak diperlukan dalam kasus ini karena ditambahkan secara otomatis seperti yang dijelaskan sebelumnya:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Saat menambahkan middleware terminal:
- Middleware harus ditambahkan setelah
UseEndpoints
. - Aplikasi perlu memanggil
UseRouting
danUseEndpoints
sehingga middleware terminal dapat ditempatkan di lokasi yang benar.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Middleware terminal adalah middleware yang berjalan jika tidak ada titik akhir yang menangani permintaan.
WebApplication
secara otomatis menambahkan middleware berikut tergantung Minimal API applications
pada kondisi tertentu:
UseDeveloperExceptionPage
ditambahkan terlebih dahulu ketikaHostingEnvironment
adalah"Development"
.UseRouting
ditambahkan kedua jika kode pengguna belum memanggilUseRouting
dan jika ada titik akhir yang dikonfigurasi, misalnyaapp.MapGet
.UseEndpoints
ditambahkan di akhir alur middleware jika ada titik akhir yang dikonfigurasi.UseAuthentication
ditambahkan segera setelahUseRouting
jika kode pengguna belum memanggilUseAuthentication
dan apakahIAuthenticationSchemeProvider
dapat terdeteksi di penyedia layanan.IAuthenticationSchemeProvider
ditambahkan secara default saat menggunakanAddAuthentication
, dan layanan terdeteksi menggunakanIServiceProviderIsService
.UseAuthorization
ditambahkan berikutnya jika kode pengguna belum memanggilUseAuthorization
dan apakahIAuthorizationHandlerProvider
dapat terdeteksi di penyedia layanan.IAuthorizationHandlerProvider
ditambahkan secara default saat menggunakanAddAuthorization
, dan layanan terdeteksi menggunakanIServiceProviderIsService
.- Middleware dan titik akhir yang dikonfigurasi pengguna ditambahkan antara
UseRouting
danUseEndpoints
.
Kode berikut secara efektif adalah apa yang ditambahkan middleware otomatis ke aplikasi:
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
Dalam beberapa kasus, konfigurasi middleware default tidak benar untuk aplikasi dan memerlukan modifikasi. Misalnya, UseCors harus dipanggil sebelum UseAuthentication dan UseAuthorization. Aplikasi perlu memanggil UseAuthentication
dan UseAuthorization
jika UseCors
dipanggil:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Jika middleware harus dijalankan sebelum pencocokan rute terjadi, UseRouting harus dipanggil dan middleware harus ditempatkan sebelum panggilan ke UseRouting
. UseEndpoints tidak diperlukan dalam kasus ini karena ditambahkan secara otomatis seperti yang dijelaskan sebelumnya:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Saat menambahkan middleware terminal:
- Middleware harus ditambahkan setelah
UseEndpoints
. - Aplikasi perlu memanggil
UseRouting
danUseEndpoints
sehingga middleware terminal dapat ditempatkan di lokasi yang benar.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Middleware terminal adalah middleware yang berjalan jika tidak ada titik akhir yang menangani permintaan.
Untuk informasi tentang middleware antiforgery di API Minimal, lihat Mencegah serangan Pemalsuan Permintaan Lintas Situs (XSRF/CSRF) di ASP.NET Core
Untuk informasi selengkapnya tentang middleware, lihat ASP.NET Core Middleware, dan daftar middleware bawaan yang dapat ditambahkan ke aplikasi.
Untuk informasi selengkapnya tentang API Minimal, lihat Minimal APIs overview
.
ASP.NET Core
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk