无法使用单例 'IMyCustomThing' 中的作用域服务 'IHttpContextAccessor'

Cannot consume scoped service 'IHttpContextAccessor' from singleton 'IMyCustomThing'

我收到这样的错误:

Cannot consume scoped service 'Microsoft.AspNetCore.Http.IHttpContextAccessor' from singleton 'MyNamespace.IMyCustomThing'

我很困惑,因为我通过调用services.AddHttpContextAccessor()注册了IHttpContextAccessor。 AddHttpContextAccessor 的代码是 here。相关部分是这样的:

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

IHttpContextAccessor 已注册为单例。为什么 ASP.Net Core 认为它是范围服务?

注意:如果相关,IMyCustomThing 使用 IHttpContextAccessor 查看是否有当前 HttpContext,如果没有则采取其他操作。

正如我们在评论中推测的那样,您有一些东西将 IHttpContextAccessor 注册为范围服务。删除那个。

services.AddHttpContextAccessor() 将其注册为单例,因为它是为使用而设计的。