InvalidOperationException:无法解析类型为“Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务

时间:2016-05-22 06:30:30

标签: .net dependency-injection asp.net-core

我开始将我的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中?

2 个答案:

答案 0 :(得分:152)

默认情况下,IHttpContextAccessor不再连接,你必须自己注册

div1

答案 1 :(得分:75)

从.NET Core 2.1开始,添加了一个扩展方法,以便将IHttpContextAccessor正确注册为单例。见Add helper to register IHttpContextAccessor #947。只需在ConfigureServices()方法中添加以下内容:

services.AddHttpContextAccessor();

这相当于:

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();