使用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和依赖注入还很陌生,所以我只想看看是否知道自己在做什么的人知道我在做什么错!

最佳答案

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

private IHttpContextAccessor _httpContextAccessor;

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


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

关于c# - 在注入(inject)的类内部使用HttpContextAccessor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56359670/

10-10 10:45