Я начал преобразовывать свой основной проект RC1 asp.net в RC2 и столкнулся с проблемой, которая сейчас IHttpContextAccessor
не решена.
Для простоты я создал новый проект ASP.NET RC2 с использованием шаблона Visual Studio ASP.NET Core Web Application (.Net Framework)
. Затем я добавил конструктор для HomeController, шаблон которого создал для меня.
public HomeController(IHttpContextAccessor accessor)
{
}
И после запуска приложения я получаю следующую ошибку:
InvalidOperationException: невозможно разрешить службу для типа «Microsoft.AspNetCore.Http.IHttpContextAccessor» при попытке активировать «TestNewCore.Controllers.HomeController». в Microsoft.Extensions.Internal.ActivatorUtilities.GetService (IServiceProvider sp, тип Type, тип requiredBy, логическое значение isDefaultParameterRequired)
В моем реальном приложении мне нужно IHttpContextAccessor
найти собственный класс обслуживания для получения доступа к _contextAccessor.HttpContext.Authentication
и _contextAccessor.HttpContext.User
. Все работает нормально в RC1. Так как это может быть в RC2?
Ответы:
IHttpContextAccessor больше не подключен по умолчанию, вы должны зарегистрировать его самостоятельно
источник
services.AddScoped<IActionContextAccessor, ActionContextAccessor>()
Singleton
,Scoped
илиTransient
?Singleton
. github.com/aspnet/Hosting/issues/793InvalidOperationException: Cannot consume scoped service
. Любая идея ?services.AddHttpContextAccessor()
который является предпочтительным / рекомендованным Microsoft.Начиная с .NET Core 2.1, был добавлен метод расширения для правильной регистрации
IHttpContextAccessor
в качестве одиночного. См. Добавление помощника для регистрации IHttpContextAccessor # 947 . Просто добавьте в вашConfigureServices()
метод следующее:Это эквивалентно:
источник