내 asp.net 코어 RC1 프로젝트를 RC2로 변환하기 시작했고 이제는 IHttpContextAccessor
해결되지 않는 문제에 직면했습니다 .
간단하게하기 위해 Visual Studio Template을 사용하여 새로운 ASP.NET RC2 프로젝트를 만들었습니다 ASP.NET Core Web Application (.Net Framework)
. 템플릿이 만든 HomeController의 생성자를 추가 한 것보다.
public HomeController(IHttpContextAccessor accessor)
{
}
응용 프로그램을 시작한 후 다음 오류가 발생합니다.
InvalidOperationException : ‘TestNewCore.Controllers.HomeController’를 활성화하는 동안 ‘Microsoft.AspNetCore.Http.IHttpContextAccessor’유형의 서비스를 확인할 수 없습니다. ◦ Microsoft.Extensions.Internal.ActivatorUtilities.GetService (IServiceProvider sp, 유형 유형, 유형 requiredBy, 부울 isDefaultParameterRequired)
실제 응용 프로그램 IHttpContextAccessor
에서 _contextAccessor.HttpContext.Authentication
와에 액세스하려면 내 서비스 클래스에서 해결해야 합니다 _contextAccessor.HttpContext.User
. Everething은 RC1에서 잘 작동합니다. 그렇다면 어떻게 RC2에 있다고 가정 할 수 있습니까?
답변
IHttpContextAccessor는 더 이상 기본적으로 연결되어 있지 않으므로 직접 등록해야합니다.
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
답변
.NET Core 2.1 IHttpContextAccessor
부터는 싱글 톤으로 올바르게 등록하기 위해 추가 된 확장 방법이 있습니다 . IHttpContextAccessor # 947 등록을 위해 헬퍼 추가를 참조 하십시오 . ConfigureServices()
방법에 다음과 같이 간단히 추가하십시오 .
services.AddHttpContextAccessor();
이것은 다음과 같습니다.
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();