Dependency injection 在每个请求使用作用域配置对象注册时,采用ASP.Net核心依赖项注入方法

Dependency injection 在每个请求使用作用域配置对象注册时,采用ASP.Net核心依赖项注入方法,dependency-injection,asp.net-core-1.0,Dependency Injection,Asp.net Core 1.0,我正在构建一个WebAPI方法,该方法需要支持每个请求内容的特定作用域配置注册 我有一个现有的服务库,它期望在构建较低级别的服务时注入一个配置对象。API控制器的构造函数被注入一个更高级别的服务,该服务依赖于较低级别。DI很好地处理了依赖关系树 我的第一个想法是将配置对象更改为作用域生存期,并创建一个中间件组件来拦截请求,并根据请求更改配置对象属性 鉴于Microsoft在ASP.Net Core中采用了新的依赖项注入方法,正确的方法是什么?我发现,通过使用中间件组件,我可以将配置注册为作用域:

我正在构建一个WebAPI方法,该方法需要支持每个请求内容的特定作用域配置注册

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

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


鉴于Microsoft在ASP.Net Core中采用了新的依赖项注入方法,正确的方法是什么?

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

services.AddScoped<IMyConfiguration, MyConfiguration>();
services.addScope();
然后在中间件中对其进行更改:

public async Task Invoke(HttpContext context)
{
    var config = context.RequestServices.GetService<IMyConfiguration>();
    config.Value = "foobar";
    _logger.LogInformation($"MyMiddleware: {config.Id}");
    await _next(context);
}
公共异步任务调用(HttpContext上下文)
{
var config=context.RequestServices.GetService();
config.Value=“foobar”;
_logger.LogInformation($“MyMiddleware:{config.Id}”);
等待下一步(上下文);
}

我只需要检查上下文来获取配置。

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

services.AddScoped<IMyConfiguration, MyConfiguration>();
services.addScope();
然后在中间件中对其进行更改:

public async Task Invoke(HttpContext context)
{
    var config = context.RequestServices.GetService<IMyConfiguration>();
    config.Value = "foobar";
    _logger.LogInformation($"MyMiddleware: {config.Id}");
    await _next(context);
}
公共异步任务调用(HttpContext上下文)
{
var config=context.RequestServices.GetService();
config.Value=“foobar”;
_logger.LogInformation($“MyMiddleware:{config.Id}”);
等待下一步(上下文);
}
我只需要检查上下文来提取配置