首页 文章

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

提问于
浏览
86

我开始将我的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 回答

  • 65

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

    services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    
  • 144

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

    services.AddHttpContextAccessor();
    

    这相当于:

    services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    

相关问题