如何在 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。
如果这对您不起作用,请发表评论并说明原因。
我有一个 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。
如果这对您不起作用,请发表评论并说明原因。