使用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和依赖注入还很陌生,所以我只想看看是否知道自己在做什么的人知道我在做什么错!
最佳答案
AddHttpContextAccessor()
方法将服务注册为IHttpContextAccessor
(请注意I
前缀以表示它是一个接口),这是您的类需要在其构造函数中明确接受的内容:
private IHttpContextAccessor _httpContextAccessor;
public AppState(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
但是,您不应该在单例类中使用它。毫无疑问,每个请求的HTTP请求都不同。
关于c# - 在注入(inject)的类内部使用HttpContextAccessor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56359670/