| 價值 | |
|---|---|
| 規則識別碼 | ASP0005 |
| 類別 | 用法 |
| 修正是破壞性或非破壞性 | 不間斷 |
原因
屬性已套用至方法定義,而不是路由處理程式端點中的路由處理程式。
規則描述
宣告端點時,屬性應該套用至委派參數,才能生效。 例如,下列程式代碼範例中的 Authorize 屬性未在已註冊的端點上設定:
app.MapGet("/todos/{id}", GetTodoById);
[Authorize]
Todo GetTodoById(int id)
{
...
}
屬性必須放在路由處理程序參數上,如下列程式代碼所示:
app.MapGet("/todos/{id}", [Authorize] GetTodoById);
Todo GetTodoById(int id)
{
...
}
如何修正違規
若要修正此規則的違規,請確定端點屬性已套用至路由處理程序參數:
app.MapGet("/todos/{id}", [Authorize] (int id) => {});
app.MapGet("/users/{id}", [Authorize] GetUserById);
隱藏警告的時機
請勿忽略此規則的警告。 錯放的屬性可能會導致在執行期間發生非預期的行為。