0
我试图给每一块遥测器添加一堆自定义数据字段,而且这些数据在单个操作中是一致的,但是因操作而异。 我有一个自定义ITelemetryInitializer,并在我可以这样做:将操作的自定义数据添加到Application Insights遥测
public class MyInitializer : ITelemetryInitializer
{
public void Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry)
{
telemetry.Context.Properties[ "platform" ] = "PC";
}
}
但我不明白,我如何想这个数据推到这个初始化。
我已经添加了这样的事情:
public class MyInitializer : ITelemetryInitializer
{
private string mPlatform = "unknown";
public void Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry)
{
telemetry.Context.Properties[ "platform" ] = mPlatform;
}
public void SetPlatform(string platform)
{
mPlatform = platform
}
}
然后在控制器级别我做这样的事情:
foreach (var init in TelemetryConfiguration.Active.TelemetryInitializers)
{
var customInit = init as MyInitializer;
if (customInit != null)
{
customInit.SetPlatform(requestPlatform);
}
}
但是,这是可怕的笨重,而且容易出错(例如,如果在调用此函数之前发送了一段遥测数据),并且我不确定这是否是线程安全的。
传递这种数据的目的是什么?