ASP0005: 不要將屬性放在路由處理常式 Lambda 所呼叫的方法上
值 | |
---|---|
規則識別碼 | ASP0005 |
類別 | 使用方式 |
修正程式是中斷或非中斷 | 不中斷 |
原因
屬性已套用至方法定義,而不是路由處理常式端點中的路由處理常式。
檔案描述
宣告端點時,屬性應該套用至委派參數,才能生效。 例如,下列程式碼範例中的 授權 屬性未在已註冊的端點上設定:
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);
隱藏警告的時機
請勿隱藏此規則的警告。 錯放的屬性可能會導致執行階段發生非預期的行為。