首页 文章

在每个请求使用范围化配置对象注册时,处理ASP.Net核心依赖注入

提问于
浏览
0

我正在构建一个WebAPI方法,需要根据请求的内容支持特定的范围配置注册 .

我有一个现有的服务库,期望在构建较低级别的服务时注入配置对象 . API控制器的构造函数注入了更高级别的服务,该服务依赖于较低级别 . DI正在很好地处理依赖树 .

我的第一个想法是将配置对象更改为Scoped生存期,并创建一个中间件组件来拦截请求并根据请求更改配置对象属性 .

考虑到ASP在ASP.Net Core中采用新的依赖注入方法,对此方法的正确方法是什么?

1 回答

  • 0

    我发现通过使用中间件组件,我可以将配置注册为Scoped:

    services.AddScoped<IMyConfiguration, MyConfiguration>();
    

    然后在中间件中更改它:

    public async Task Invoke(HttpContext context)
    {
        var config = context.RequestServices.GetService<IMyConfiguration>();
        config.Value = "foobar";
        _logger.LogInformation($"MyMiddleware: {config.Id}");
        await _next(context);
    }
    

    我只需要检查上下文来拉动我的配置 .

相关问题