.net - net - mvc dependency injection
InvalidOperationException: no se puede resolver el servicio para el tipo ''Microsoft.AspNetCore.Http.IHttpContextAccessor'' (2)
Comencé a convertir mi proyecto asp.net core RC1 a RC2 y enfrenté un problema que ahora
IHttpContextAccessor
no resuelve.
En aras de la simplicidad, creé un nuevo proyecto ASP.NET RC2 utilizando Visual Studio Template
ASP.NET Core Web Application (.Net Framework)
.
Luego agregué el constructor de HomeController que plantilla creó para mí.
public HomeController(IHttpContextAccessor accessor)
{
}
Y después de iniciar la aplicación, recibo el siguiente error:
InvalidOperationException: no se puede resolver el servicio para el tipo ''Microsoft.AspNetCore.Http.IHttpContextAccessor'' al intentar activar ''TestNewCore.Controllers.HomeController''. Microsoft.Extensions.Internal.ActivatorUtilities.GetService (IServiceProvider sp, Type type, Type requiredBy, Boolean isDefaultParameterRequired)
En mi aplicación real, necesito resolver
IHttpContextAccessor
en mi propia clase de servicio para obtener acceso a
_contextAccessor.HttpContext.Authentication
y a
_contextAccessor.HttpContext.User
.
Everething funciona bien en RC1.
Entonces, ¿cómo puede suponer estar en RC2?
A partir de .NET Core 2.1, se ha agregado un método de extensión para registrar correctamente un
IHttpContextAccessor
como singleton.
Consulte
Agregar ayuda para registrar IHttpContextAccessor # 947
.
Simplemente agregue lo siguiente en su método
ConfigureServices()
:
services.AddHttpContextAccessor();
Esto es equivalente a:
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
IHttpContextAccessor ya no está conectado de forma predeterminada, debe registrarlo usted mismo
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();