手动获取注入对象


HttpContext来获取实例

HttpContext下有一个RequestedService同样可以用来获取实例对象

public static class ServiceLocator { public static IServiceProvider Instance { get; set; } }

然后在Configure中去赋值一下即可:

使用的时候就可以直接用了

ConfigureServices中

有时间我们可以会做一点初始化的操作,需要在这里获取

IArticleDAL articleDAL = app.ApplicationServices.GetService(typeof(IArticleDAL)) as IArticleDAL;

注意如果你需要获取的对象里边依赖的对象使用了Scope方式注入这样获取会报错:

Cannot resolve 'XX.IArticleDAL' from root provider because it requires scoped service 'XX.CNBLOGContext'.

需要这样获取

var serviceProvider = app.ApplicationServices; var httpContextAccessor = serviceProvider.GetRequiredService();

2.调用

httpContextAccessor.HttpContext.RequestServices.GetService();