共用方式為


ASP0005:不要將屬性放在路由處理程式 Lambda 所呼叫的方法上

價值
規則識別碼 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);

隱藏警告的時機

請勿忽略此規則的警告。 錯放的屬性可能會導致在執行期間發生非預期的行為。