相关疑难解决方法(0)

.NET Core DI 允许将作用域服务注入到本地计算机上的单例中

我在 Startup.cs 中有以下代码

\n
    public void ConfigureServices(IServiceCollection services)\n    {\n        // EF\n        services.AddDbContext<MyDatabaseContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));\n\n        // domain services            \n        services.AddScoped<ILookupService, LookupService>();\n        \n        services.AddMemoryCache();\n\n        // singleton\n        services.AddSingleton<CacheManager>();            \n    }\n\n\npublic class CacheManager\n{\n    private readonly ILookupService _lookupService;\n    private readonly IMemoryCache _cache;\n    public CacheManager(ILookupService lookupService, IMemoryCache cache)\n    {\n        _lookupService = lookupService;\n        _cache = cache;\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

当我在开发服务器上部署应用程序并尝试访问时。我看到异常

\n
\n

AggregateException:无法构造某些服务\n(验证服务描述符“ServiceType:\nUI.Helpers.CacheManager 生命周期:单例\nImplementationType:UI.Helpers.CacheManager”时出错\n:无法\n使用作用域服务\n“ApplicationCore” .Services.ILookupService'来自\nsingleton'UI.Helpers.CacheManager'。)

\n
\n

请注意,我理解为什么会发生这种情况,我会解决它。基本上,您无法将较小范围的服务注入到较大范围的服务中。ASP.NET Core 的 DI 试图确保您不\xe2\x80\x99t 这样做。

\n

我不明白为什么当我在 VS 中本地运行应用程序时没有看到这个问题?

\n

c# asp.net-core-mvc asp.net-core

8
推荐指数
1
解决办法
2272
查看次数

标签 统计

asp.net-core ×1

asp.net-core-mvc ×1

c# ×1