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.
ASP.NET Core