Udostępnij za pośrednictwem


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.