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.