Поделиться через


Метаданные EndpointName не задаются автоматически

Поведение, представленное в .NET 6 RC 1, чтобы автоматически задавать IEndpointNameMetadata для конечных точек, отменено. 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

Н/Д