ASP0005: Do not place attribute on method called by route handler lambda
Value | |
---|---|
Rule ID | ASP0005 |
Category | Usage |
Fix is breaking or non-breaking | Non-breaking |
Cause
An attribute was applied to a method definition instead of the route handler in a route handler endpoint.
Rule description
When an endpoint is declared, attributes should be applied to the delegate parameter in order to be effective. For example, the Authorize attribute in the following code sample isn't set on the registered endpoint:
app.MapGet("/todos/{id}", GetTodoById);
[Authorize]
Todo GetTodoById(int id)
{
...
}
The attribute must be placed on the route handler parameter as shown in the following code:
app.MapGet("/todos/{id}", [Authorize] GetTodoById);
Todo GetTodoById(int id)
{
...
}
How to fix violations
To fix a violation of this rule, make sure that endpoint attributes are applied to the route handler parameter:
app.MapGet("/todos/{id}", [Authorize] (int id) => {});
app.MapGet("/users/{id}", [Authorize] GetUserById);
When to suppress warnings
Do not suppress a warning from this rule. Misplaced attributes can result in unexpected behavior at runtime.
Povratne informacije
https://aka.ms/ContentUserFeedback.
Stiže uskoro: Tijekom 2024. postupno ćemo ukinuti servis Problemi sa servisom GitHub kao mehanizam za povratne informacije za sadržaj i zamijeniti ga novim sustavom za povratne informacije. Dodatne informacije potražite u članku:Pošaljite i pogledajte povratne informacije za