| 価値 | |
|---|---|
| ルール識別子 | ASP0005 |
| カテゴリ | Usage |
| 修正が破壊的であるか非破壊的であるか | Non-breaking |
原因
ルート ハンドラー エンドポイントのルート ハンドラーの代わりに、属性がメソッド定義に適用されました。
ルールの説明
エンドポイントが宣言されている場合は、有効にするためにデリゲート パラメーターに属性を適用する必要があります。 たとえば、次のコード サンプルの 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);
警告を抑制するタイミング
この規則による警告は抑制しないでください。 属性が正しく配置されていないと、実行時に予期しない動作が発生する可能性があります。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
ASP.NET Core