Para admitir Application Insights en varios entornos, estamos configurando la clave de instrumentación mediante programación, como se recomienda en esta publicación .
Dejamos <InstrumentationKey> en ApplicationInsights.config vacío y, en su lugar, agregamos una configuración de aplicación en web.config :
<add key="ApplicationInsightsInstrumentationKey" value="1234-5678-9xxx" />En Application_Start hacemos lo siguiente para establecer la clave de instrumentación:
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");Sin embargo, esto produce una excepción que dice " TelemetryChannel debe inicializarse antes de que pueda enviar telemetría ".
Buscar en Google este mensaje de excepción no arroja nada, pero supongo que se requiere algo adicional antes de que se puedan rastrear los eventos.
Eliminar el elemento <InstrumentationKey /> de ApplicationInsights.config parece funcionar.
He hecho exactamente lo mismo, configurando iKey en Application_Start() para una aplicación web, y antes de crear new() un TelemetryClient en aplicaciones de consola. No tengo ningún elemento en mi ApplicationInsights.config, ni siquiera uno en blanco. Guardo un comentario en ese archivo de configuración que dice que la clave se configura mediante programación.