要在多个环境中支持应用洞察,我们将按照this post中的建议以编程方式设置检测密钥。
我们已将ApplicationInsights.config中的<InstrumentationKey>
留空,而是在 web.config 中添加了应用程序设置:
<add key="ApplicationInsightsInstrumentationKey" value="1234-5678-9xxx" />
在 Application_Start 中,我们执行以下操作来设置检测密钥:
var instrumentationKey = ConfigurationManager.AppSettings["ApplicationInsightsInstrumentationKey"];
if (string.IsNullOrWhiteSpace(instrumentationKey))
{
throw new ConfigurationErrorsException("Missing app setting 'ApplicationInsightsInstrumentationKey' used for Application Insights");
}
TelemetryConfiguration.Active.InstrumentationKey = instrumentationKey;
new TelemetryClient().TrackEvent("Application started");
但是,这会产生一个例外,说明&#34; 必须先初始化TelemetryChannel才能发送遥测&#34;。
Google搜索此异常消息不会产生任何结果,但我想在跟踪事件之前还需要一些其他内容吗?
答案 0 :(得分:11)
从ApplicationInsights.config中删除<InstrumentationKey />
元素似乎可以解决问题。
我做了完全相同的事情,在Web应用程序的Application_Start()中设置iKey,然后在控制器应用程序中新建一个TelemetryClient之前。我不在我的ApplicationInsights.config中有任何元素,甚至不是空白元素。我在该配置文件中保留一条评论,说明该密钥是以编程方式设置的。