【发布时间】:2020-09-24 23:28:20
【问题描述】:
我在尝试解决此类服务时遇到异常 IApplicationBuilder.ApplicationServices.GetServices<AdminPanelDbContext>(); 和 "ASPNETCORE_ENVIRONMENT": "Development" 设置为开发。
例外:
无法从根提供程序解析范围服务“AdminPanel.DAL.DbContexts.AdminPanel.AdminPanelDbContext”。
但是当我设置"ASPNETCORE_ENVIRONMENT": "Production" 时一切正常。
我看了下appsettnings.Development.json,和appsettings.json没什么不同。是否有任何其他设置会影响这一点?
【问题讨论】:
-
你为什么要从我假设的
IApplicationBuilder中获取服务? (XY 问题?) -
猜测一下。在
Startup.Configure方法中访问范围服务是一个错误,在发布环境中可能会被原谅。您应该创建一个新的服务范围,并可能将其移至IHostedService。 -
@JeremyLakeman,是的,它是
IApplicationBuilder。我已经这样做了using (IServiceScope scopeServiceProvide = IApplicationBuilder.ApplicationServices.CreateScope())但想知道为什么会这样。
标签: c# dependency-injection asp.net-core-3.1