.net核心运行状况检查注入作用域依赖项

k2fxgqgv  于 2023-07-01  发布在  .NET
关注(0)|答案(1)|浏览(164)

我想在RunCheckAsync期间调用注入类(Scoped)中的特定方法
https://github.com/dotnet/aspnetcore/blob/bf50999cd8e60d4c683b772dffa9898794a8433a/src/HealthChecks/HealthChecks/src/DefaultHealthCheckService.cs#L56
此处为运行状况检查的注册表
services.AddHealthChecks() .AddDbContextCheck<MyDbCtxContext>("dbContextChecks", null,HealthCheckTagsConstants.ReadinessTags);
与我的“MyDbCtxContext”相关的connectionString是动态的,我需要在HttpRequest中检索一个元数据(例如客户的标识符),并调用我注入的类中的方法“SetIdentifier”。
我尝试创建一个中间件来检索信息并指定标识符,但是中间件是在这里创建的范围之外管理的
https://github.com/dotnet/aspnetcore/blob/bf50999cd8e60d4c683b772dffa9898794a8433a/src/HealthChecks/HealthChecks/src/DefaultHealthCheckService.cs#L78
在这一点上,有两个范围

  • 当HttpRequest被创建(由框架管理)时,中间件从该作用域中检索我的类
  • 调用RunCheckAsync方法时

我该怎么办?我怎样才能让我的类进入第二个范围?

cyej8jka

cyej8jka1#

为了完成我的用例,
在我的业务中使用的所有类都注入了'IDentifierProvider',这个类的目的是提供'IdentifierName'(客户端名称)。
此类公开一个方法“SetIdentifier”以指定当前范围中的客户端名称。
我想将我的标识符设置到DefaultHealthCheckService创建的范围中

相关问题