[.net] InvalidOperationException : ‘Microsoft.AspNetCore.Http.IHttpContextAccessor’유형의 서비스를 확인할 수 없습니다.

내 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>();


답변