エンドポイントの IEndpointNameMetadata を自動的に設定するために .NET 6 RC 1 で導入された動作が元に戻されました。
IEndpointNameMetadata は、重複するエンドポイント名の問題を回避するために自動的に設定されなくなりました。
導入されたバージョン
ASP.NET Core 6 RC 2
以前の動作
ASP.NET Core 6 RC 1 では、 IEndpointNameMetadata はメソッド グループを参照するエンドポイントに対して自動的に設定されました。 たとえば、次のコードでは、/fooが EndpointName に設定されたGetFooのエンドポイントが生成されています。
app.MapGet("/foo", GetFoo);
新しい動作
ASP.NET Core 6 RC 2 以降では、 IEndpointNameMetadata は自動的に設定されません。 次のコードでは、 IEndpointNameMetadataは生成されません。
app.MapGet("/foo", GetFoo);
破壊的変更の種類
この変更は ソースの互換性に影響を与える可能性があります。
変更の理由
エンドポイント名メタデータを自動的に設定する動作は堅牢ではなく、異なるエンドポイントに同じ名前が設定されている問題が発生しました。 詳細については、 dotnet/aspnetcore#36487 を参照してください。
推奨されるアクション
メタデータを設定するために、IEndpointNameMetadata拡張メソッドを使用してWithNameを手動で設定することをお勧めします。
app.MapGet("/foo", GetFoo).WithName("GetFoo");
影響を受ける API
なし
.NET