ASP0005: ルート ハンドラー ラムダによって呼び出されるメソッドに属性を配置しない

Value
ルール ID 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);

どのようなときに警告を抑制するか

この規則による警告は抑制しないでください。 属性が正しく配置されていないと、実行時に予期しない動作が発生する可能性があります。