gpt4 book ai didi

c# - 在注入(inject)类中使用 HttpContextAccessor

转载 作者:太空宇宙 更新时间:2023-11-03 12:02:48 25 4
gpt4 key购买 nike

使用 ASP.NET Core 3.0 Preview 5,我正在尝试访问 HttpContextAccessor从内部 AppState我正在注入(inject)我的应用程序的类。

不幸的是,我一直收到 System.AggregateException有一条消息

''Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: [MyNameSpace].AppState Lifetime: Singleton ImplementationType: [MyNameSpace].AppState': Unable to resolve service for type 'Microsoft.AspNetCore.Http.HttpContextAccessor' while attempting to activate '[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 和依赖注入(inject)的新手,我只是想看看知道自己在做什么的人是否知道我做错了什么!

最佳答案

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

private IHttpContextAccessor _httpContextAccessor;

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com