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.
Tilbakemeldinger
https://aka.ms/ContentUserFeedback.
Kommer snart: Gjennom 2024 faser vi ut GitHub Issues som tilbakemeldingsmekanisme for innhold, og erstatter det med et nytt system for tilbakemeldinger. Hvis du vil ha mer informasjon, kan du se:Send inn og vis tilbakemelding for