Compartir a través de


Autorización: el recurso en el enrutamiento de puntos de conexión es HttpContext.

Al usar el enrutamiento de puntos de conexión en ASP.NET Core 3.1, el recurso usado para la autorización es el punto de conexión. Este enfoque no era suficiente para obtener acceso a los datos de ruta (RouteData). Anteriormente en MVC, se pasó un recurso HttpContext, que permite el acceso tanto al endpoint (Endpoint) como a los datos de la ruta. Este cambio garantiza que el recurso que se pasa a la autorización siempre sea HttpContext.

Versión introducida

ASP.NET Core 5.0

Comportamiento anterior

Al usar el enrutamiento de punto de conexión y los atributos de middleware de autorización (AuthorizationMiddleware) o [Authorize], el recurso que se pasa a la autorización es el punto de conexión coincidente.

Nuevo comportamiento

El enrutamiento del punto de conexión pasa HttpContext a la autorización.

Motivo del cambio

Puede acceder al punto de conexión desde HttpContext. Pero no había ninguna manera de acceder desde el punto de conexión a elementos como los datos de ruta. Se ha producido una pérdida en la funcionalidad del enrutamiento no basado en punto de conexión.

Si su aplicación utiliza el recurso de punto de conexión, llame a GetEndpoint en HttpContext para continuar accediendo al punto de conexión.

Puede revertir al comportamiento anterior con SetSwitch. Por ejemplo:

AppContext.SetSwitch(
    "Microsoft.AspNetCore.Authorization.SuppressUseHttpContextAsAuthorizationResource",
    isEnabled: true);

Las APIs afectadas

Ninguno