Ted Nyberg
Ted Nyberg

Reputation: 7411

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?

Upvotes: 11

Views: 10294

Answers (1)

BrettJ
BrettJ

Reputation: 980

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.

Upvotes: 14

Related Questions