只有在 TelemetryConfiguration 的 using 语句中实例化客户端时,才能在 Applicationinsightss 中使用 TelemetryClient
Using the TelemetryClient in Applicationinsightss works only when the client is instantiated in a TelemetryConfiguration`s using statement
我正在使用 ApplicationInsights,定义和发送我自己的自定义事件。
我为此使用遥测客户端。
只有当我如下实例化和使用我的遥测客户端对象时它才有效:
TelemetryClient telemetryClient;
using (var telemetryConfiguration = new TelemetryConfiguration("instrumentationKey"))
{
telemetryClient = new TelemetryClient(telemetryConfiguration);
telemetryClient.TrackEvent("CustomEvent1");
telemetryClient.Flush();
Thread.Sleep(5000);
}
问题是,我想在不同的服务中注入 telemtryClient。然而,在同一位置调用此调用不会在门户中生成任何事件:
TelemetryClient telemetryClient;
using (var telemetryConfiguration = new TelemetryConfiguration("instrumentationKey"))
{
telemetryClient = new TelemetryClient(telemetryConfiguration);
}
telemetryClient.TrackEvent("CustomEvent1");
telemetryClient.Flush();
Thread.Sleep(5000);
这是使用 telemtryClient 的错误方法吗?
如果您正在编写 .Net Core 应用程序,您可以在 Startup.cs 的 ConfigureServices 方法中配置 TelemetryClient 的依赖注入。
有关完整示例,请参阅 here。
public void ConfigureServices(IServiceCollection services)
{
...
services.AddApplicationInsightsTelemetry();
...
}
然后,例如,如果您正在编写 Mvc 应用程序,则可以像这样在控制器中注入 TelemetryClient:
private readonly TelemetryClient tc;
public MyController(TelemetryClient _tc)
{
tc = _tc;
}
public HttpResponseMessage Get(int id)
{
tc.TrackEvent("CustomEvent1");
...
}
确保还正确配置了 appsettings.json:
"ApplicationInsights": {
"InstrumentationKey": "..." }
希望这对您有所帮助,
安德烈亚斯
我正在使用 ApplicationInsights,定义和发送我自己的自定义事件。
我为此使用遥测客户端。 只有当我如下实例化和使用我的遥测客户端对象时它才有效:
TelemetryClient telemetryClient;
using (var telemetryConfiguration = new TelemetryConfiguration("instrumentationKey"))
{
telemetryClient = new TelemetryClient(telemetryConfiguration);
telemetryClient.TrackEvent("CustomEvent1");
telemetryClient.Flush();
Thread.Sleep(5000);
}
问题是,我想在不同的服务中注入 telemtryClient。然而,在同一位置调用此调用不会在门户中生成任何事件:
TelemetryClient telemetryClient;
using (var telemetryConfiguration = new TelemetryConfiguration("instrumentationKey"))
{
telemetryClient = new TelemetryClient(telemetryConfiguration);
}
telemetryClient.TrackEvent("CustomEvent1");
telemetryClient.Flush();
Thread.Sleep(5000);
这是使用 telemtryClient 的错误方法吗?
如果您正在编写 .Net Core 应用程序,您可以在 Startup.cs 的 ConfigureServices 方法中配置 TelemetryClient 的依赖注入。 有关完整示例,请参阅 here。
public void ConfigureServices(IServiceCollection services)
{
...
services.AddApplicationInsightsTelemetry();
...
}
然后,例如,如果您正在编写 Mvc 应用程序,则可以像这样在控制器中注入 TelemetryClient:
private readonly TelemetryClient tc;
public MyController(TelemetryClient _tc)
{
tc = _tc;
}
public HttpResponseMessage Get(int id)
{
tc.TrackEvent("CustomEvent1");
...
}
确保还正确配置了 appsettings.json:
"ApplicationInsights": {
"InstrumentationKey": "..." }
希望这对您有所帮助, 安德烈亚斯