在注入的类

时间:2019-05-29 11:35:08

标签: c# .net asp.net-core

使用ASP.NET Core 3.0 Preview 5,我试图从注入到应用程序中的HttpContextAccessor类内部访问AppState

不幸的是,我不断收到System.AggregateException的消息

  

''某些服务无法构建(验证服务描述符'ServiceType:[MyNameSpace] .AppState时出错   生命周期:单例实现类型:[MyNameSpace] .AppState':   无法解析服务类型   尝试执行'Microsoft.AspNetCore.Http.HttpContextAccessor'   激活'[MyNameSpace] .AppState'。)'

我的 Startup.cs 文件如下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();
    services.AddServerSideBlazor();

    services.AddHttpContextAccessor();
    services.AddSingleton<AppState>();

    // More services
}

和我的 AppState.cs 文件如下:

private HttpContextAccessor _httpContextAccessor;

public AppState(HttpContextAccessor httpContextAccessor)
{
     _httpContextAccessor = httpContextAccessor;
}

我已经在线检查过,看来仅将AddHttpContextAccessorAddSingleton<T>添加到我的ConfigureServices方法中就可以解决问题,但是由于某些原因,它无法正常工作。

>

由于我对ASP.NET Core和依赖注入还很陌生,所以我只是想看看是否知道自己在做什么的人知道我在做什么错!

1 个答案:

答案 0 :(得分:1)

AddHttpContextAccessor()方法将服务注册为IHttpContextAccessor(注意I前缀表示它是一个接口),这就是您的类需要在其构造函数中明确接受的内容:

private IHttpContextAccessor _httpContextAccessor;

public AppState(IHttpContextAccessor httpContextAccessor)
{
     _httpContextAccessor = httpContextAccessor;
}

但是,您不应该在单例类中使用它。毫无疑问,每个请求的HTTP请求都是不同的。