Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatically setting Application Insights instrumentation key throws error

To support Application Insights in multiple environments, we are setting the Instrumentation Key programmatically, as adviced in this post.

We have left <InstrumentationKey> in ApplicationInsights.config empty, and instead added an application setting in web.config:

<add key="ApplicationInsightsInstrumentationKey" value="1234-5678-9xxx" />

In Application_Start we do the following to set the instrumentation key:

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");

However, this produces an exception saying "TelemetryChannel must be initialized before it can send telemetry".

Googling this exception message yields nothing, but I guess there's something additional required before events can be tracked?

like image 274
Ted Nyberg Avatar asked Jul 17 '15 08:07

Ted Nyberg


1 Answers

Removing the <InstrumentationKey /> element from ApplicationInsights.config seems to do the trick.

I've done the exact same thing, setting the iKey in Application_Start() for a web application, and before I new() up a TelemetryClient in console applications. I do not have any element in my ApplicationInsights.config, not even a blank one. I keep a comment in that config file that says the key is being set programmatically.

like image 188
BrettJ Avatar answered Oct 03 '22 16:10

BrettJ