Freigeben über


ASP0005: Attribut nicht auf methode platzieren, die von Routinghandler-Lambda aufgerufen wird

Wert
Regel-ID ASP0005
Kategorie Usage
Korrektur ist blockierend oder nicht-blockierend Non-breaking

Ursache

Ein Attribut wurde auf eine Methodendefinition anstelle des Routenhandlers in einem Routenhandlerendpunkt angewendet.

Regelbeschreibung

Wenn ein Endpunkt deklariert wird, sollten Attribute auf den Delegatparameter angewendet werden, um effektiv zu sein. Beispielsweise wird das Authorize-Attribut im folgenden Codebeispiel nicht für den registrierten Endpunkt festgelegt:

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

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

Das Attribut muss wie im folgenden Code dargestellt auf den Parameter "Route-Handler" gesetzt werden:

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

Todo GetTodoById(int id)
{
  ...
}

Wie man Verstöße behebt

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 zu unerwartetem Verhalten zur Laufzeit führen.