次の方法で共有


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

価値
ルール識別子 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);

警告を抑制するタイミング

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