【发布时间】:2021-11-14 12:43:09
【问题描述】:
我有一个范围服务,我希望将 IMemoryCache 注入其中。
IMemoryCache 已在启动期间使用以下代码添加:
services.AddMemoryCache();
services.AddScoped<IUserService, UserService>();
Autofac在Program.cs中配置如下:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
我有另一个类,UserService,我想用它来访问缓存的数据,但我遇到了 DI 问题。我应该补充一下,我正在使用 AutoFac,但也尝试将其关闭并获得相同的结果:
没有找到类型为“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”的构造函数 '排班.基础设施.身份.服务.用户服务' 可以使用可用的服务和参数调用: 无法解析构造函数“Void”的参数“Microsoft.Extensions.Caching.Memory.IMemoryCache memoryCache” .ctor(Microsoft.AspNetCore.Http.IHttpContextAccessor, Microsoft.Extensions.Caching.Memory.IMemoryCache)'。
有人对为什么会这样有任何建议吗?
【问题讨论】:
-
您能否分享更多详细信息如何设置 Autofac?
-
@user2250152 我添加了有关如何配置 autofac 的详细信息
-
您在 Autofac 中显示的连接的服务不是您在异常中显示为已解决的服务。
AuthenticatedUserService既不是IUserService也不是UserService,尽管名称看起来很相似。 -
@TravisIllig 我的错误,这只是该类的旧名称,我已对其进行了修改,并且可以向您保证它们都匹配。
-
很公平。细节在这些事情中很重要——很多答案实际上是因为这个人正在解决或注册错误的类型。 ;)
标签: c# .net-core dependency-injection autofac