使用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;
}
我已经在线检查过,看来仅将AddHttpContextAccessor
和AddSingleton<T>
添加到我的ConfigureServices
方法中就可以解决问题,但是由于某些原因,它无法正常工作。
由于我对ASP.NET Core和依赖注入还很陌生,所以我只是想看看是否知道自己在做什么的人知道我在做什么错!
答案 0 :(得分:1)
AddHttpContextAccessor()
方法将服务注册为IHttpContextAccessor
(注意I
前缀表示它是一个接口),这就是您的类需要在其构造函数中明确接受的内容:
private IHttpContextAccessor _httpContextAccessor;
public AppState(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
但是,您不应该在单例类中使用它。毫无疑问,每个请求的HTTP请求都是不同的。