ASP0005: Nie umieszczaj atrybutu w metodzie wywoływanej przez lambda obsługi tras
Wartość | |
---|---|
Identyfikator reguły | ASP0005 |
Kategoria | Użycie |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Przyczyna
Atrybut został zastosowany do definicji metody zamiast procedury obsługi tras w punkcie końcowym procedury obsługi tras.
Opis reguły
Po zadeklarowaniu punktu końcowego atrybuty powinny być stosowane do parametru delegata w celu zapewnienia skuteczności. Na przykład atrybut Authorize w poniższym przykładzie kodu nie jest ustawiony w zarejestrowanym punkcie końcowym:
app.MapGet("/todos/{id}", GetTodoById);
[Authorize]
Todo GetTodoById(int id)
{
...
}
Atrybut musi zostać umieszczony w parametrze procedury obsługi tras, jak pokazano w poniższym kodzie:
app.MapGet("/todos/{id}", [Authorize] GetTodoById);
Todo GetTodoById(int id)
{
...
}
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, upewnij się, że atrybuty punktu końcowego są stosowane do parametru procedury obsługi tras:
app.MapGet("/todos/{id}", [Authorize] (int id) => {});
app.MapGet("/users/{id}", [Authorize] GetUserById);
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły. Zagubione atrybuty mogą spowodować nieoczekiwane zachowanie w czasie wykonywania.