Bagikan melalui


ASP0005: Jangan menempatkan atribut pada metode yang dipanggil oleh penangan rute lambda

Nilai
ID Aturan ASP0005
Kategori Penggunaan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif

Penyebab

Atribut diterapkan ke definisi metode alih-alih handler rute di titik akhir handler rute.

Deskripsi aturan

Ketika titik akhir dideklarasikan, atribut harus diterapkan ke parameter delegasi agar efektif. Misalnya, atribut Otorisasi dalam sampel kode berikut tidak diatur pada titik akhir terdaftar:

app.MapGet("/todos/{id}", GetTodoById);

[Authorize]
Todo GetTodoById(int id)
{
  ...
}

Atribut harus ditempatkan pada parameter handler rute seperti yang ditunjukkan dalam kode berikut:

app.MapGet("/todos/{id}", [Authorize] GetTodoById);

Todo GetTodoById(int id)
{
  ...
}

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran aturan ini, pastikan bahwa atribut titik akhir diterapkan ke parameter handler rute:

app.MapGet("/todos/{id}", [Authorize] (int id) => {});
app.MapGet("/users/{id}", [Authorize] GetUserById);

Kapan harus menekan peringatan

Jangan menyembunyikan peringatan dari aturan ini. Atribut yang salah tempat dapat mengakibatkan perilaku tak terduga saat runtime.