Freigeben über


ASP0005: Attribut nicht in der Methode platzieren, die vom Routenhandlerlambda aufgerufen wird

Wert
Regel-ID ASP0005
Kategorie Verwendung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend

Ursache

Ein Attribut wurde auf eine Methodendefinition anstatt auf einen Routenhandler in einem Routenhandlerendpunkt angewendet.

Regelbeschreibung

Wenn ein Endpunkt deklariert wird, sollten Attribute auf den Delegatparameter angewendet werden, damit sie wirksam werden. Beispielsweise ist das Authorize-Attribut im folgenden Codebeispiel nicht auf den registrierten Endpunkt festgelegt:

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

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

Das Attribut muss im Routenhandlerparameter platziert werden, wie im folgenden Code gezeigt:

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

Todo GetTodoById(int id)
{
  ...
}

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, stellen Sie sicher, dass Endpunktattribute auf den Routenhandlerparameter angewendet werden:

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

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel. Falsch platzierte Attribute können zur Laufzeit zu unerwartetem Verhalten führen.