我开始将我的asp.net核心RC1项目转换为RC2并面临现在IHttpContextAccessor
无法解决的问题。
为简单起见,我使用Visual Studio模板ASP.NET Core Web Application (.Net Framework)
创建了新的ASP.NET RC2项目。我为HomeController添加了为我创建的模板的构造函数。
public HomeController(IHttpContextAccessor accessor)
{
}
在我开始申请后,我收到下一个错误:
InvalidOperationException:尝试激活“TestNewCore.Controllers.HomeController”时,无法解析类型“Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务。 Microsoft.Extensions.Internal.ActivatorUtilities.GetService(IServiceProvider sp,Type type,Type requiredBy,Boolean isDefaultParameterRequired)
在我的真实应用程序中,我需要在我自己的服务类中解析IHttpContextAccessor
,才能访问_contextAccessor.HttpContext.Authentication
和_contextAccessor.HttpContext.User
。在RC1中,Everething运行良好。那么如何假设它在RC2中?
答案 0 :(得分:152)
默认情况下,IHttpContextAccessor不再连接,你必须自己注册
div1
答案 1 :(得分:75)
从.NET Core 2.1开始,添加了一个扩展方法,以便将IHttpContextAccessor
正确注册为单例。见Add helper to register IHttpContextAccessor #947。只需在ConfigureServices()
方法中添加以下内容:
services.AddHttpContextAccessor();
这相当于:
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();