如何在 ASP.NET 核心应用启动时访问 TelemetryClient 单例实例

How to access the TelemetryClient singleton instance in startup for ASP.NET core app

我有一个 ASP.NET 核心 Web 应用程序,它使用 Application Insights 进行遥测。我想用我自己的接口包装 TelemetryClient 对象并将该实例添加到服务集合中。为此,我需要访问 startup.cs 中遥测客户端的单例实例。我可以用这个代码获取服务信息:

        var info = services.Where(x => x.ServiceType.Name == "TelemetryClient").Single();

该信息有一个我希望在其中找到实例的 ImplementationInstance,但它是空的。有什么方法可以获取此项的单例实例,以便我可以用它创建包装器 class 实例吗?我的另一个选择是在我的控制器构造函数中创建包装器 class 因为我可以通过以下代码从服务容器访问它:

HttpContext.RequestServices.GetService(typeof(T)) 作为 T;

如有任何帮助,我们将不胜感激。谢谢

你做不到吗?

public class Wrapper
{
    public Wrapper(TelemetryClient telemetryClient)
    {
         // Handle init
    }
}

并在服务集合中注册:

services.AddTransient<Wrapper>();

然后您可以通过构造函数在您的控制器中获取 Wrapper。

如果这对您不起作用,请发表评论并说明原因。