我在 Startup.cs 文件中有以下代码:
public void ConfigureServices(IServiceCollection services)
{
// EF
services.AddDbContext<MyDatabaseContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
// domain services
services.AddScoped<ILookupService, LookupService>();
services.AddMemoryCache();
// singleton
services.AddSingleton<CacheManager>();
}
public class CacheManager
{
private readonly ILookupService _lookupService;
private readonly IMemoryCache _cache;
public CacheManager(ILookupService lookupService, IMemoryCache cache)
{
_lookupService = lookupService;
_cache = cache;
}
}
当我部署应用程序在开发服务器上并尝试访问时,我看到异常
AggregateException:一些服务无法构建 (验证服务描述符时出错:'ServiceType: UI.Helpers.CacheManager Lifetime: Singleton ImplementationType: UI.Helpers.CacheManager':无法从单例 'UI.Helpers.CacheManager' 使用作用域服务 'ApplicationCore.Services.ILookupService'。)
请注意,我理解为什么会出现这种情况,并将予以修正。基本上,您不能将范围较小的服务注入到范围较大的服务中。ASP.NET Core的DI系统会尝试确保您不这样做。
我不明白的是,在本地运行应用程序时为什么没有看到此问题?