Deshabilitar las estadísticas de las aplicaciones en depuración

¿Cómo puedo desactivar las estadísticas de las aplicaciones de forma automática cuando utilizo una configuración de depuración y habilitarla solo en la versión?
¿Es posible hacer esto sin crear otra clave de instrumentación solo para la depuración?

Tengo declaraciones de trackevent distribuidas por todo el código, encerrarlas dentro de una comprobación de preprocesador de depuración no es una solución ideal.

Mi solución actual es establecer la Build Action de Build Action del archivo ApplicationInsights.config en None para que no se copie en el directorio de salida del proyecto, pero este no es un proceso que pueda automatizarse en función de la configuración de comstackción activa.

Hay un Modo de desarrollador, pero debe cambiarse manualmente (si fue posible establecer condicionalmente el archivo de configuración, también se vació el problema solucionado por la clave de instrumentación). Ver http://apmtips.com/blog/2015/02/02/developer-mode/

Referencia: http://blogs.msdn.com/b/visualstudioalm/archive/2015/01/07/application-insights-support-for-multiple-environments-stamps-and-app-versions.aspx

Puede intentar usar TelemetryConfiguration.DisableTelemetry Property Algo así …

 #if DEBUG TelemetryConfiguration.Active.DisableTelemetry = true; #endif 

Como una adición a las otras soluciones, sugeriría agregar lo siguiente digamos a Global.asax :

 protected void Application_Start() { DisableApplicationInsightsOnDebug(); // do the other stuff } ///  /// Disables the application insights locally. ///  [Conditional("DEBUG")] private static void DisableApplicationInsightsOnDebug() { TelemetryConfiguration.Active.DisableTelemetry = true; } 

La ventaja de esto es que no necesita ningún cambio en las configuraciones y funciona mejor con algunas herramientas como ReSharper, que lo entenderá mejor que # -directivas.

Como se explica en la pregunta, no desplegar o desplegar un ApplicationInsights.config sin la key que no se generen eventos. A continuación, puede poner la clave de instrumentación en el código (solo en la versión en mi caso)

 #if !DEBUG Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = "instrumentation key"; #endif 

Cada TelemetryClient creado después de esta llamada tendrá la clave correcta y hará un seguimiento de los eventos para que no tenga que cambiar el código en todos los lugares. No llamar al método anterior o dejar el parámetro vacío bloqueará los eventos porque no hay una clave configurada.

Básicamente, el archivo ApplicationInsights.config anula cualquier código que establezca la clave de instrumentación, eliminando la key que le permitirá usar el código para configurar la clave. Si elimina el archivo por completo, no funciona.

Aquí está la confirmación: “Si desea establecer la clave de forma dinámica, por ejemplo, si desea enviar resultados desde su aplicación a diferentes recursos, puede omitir la clave del archivo de configuración y configurarla en código”.

Referencia: https://azure.microsoft.com/en-us/documentation/articles/app-insights-configuration-with-applicationinsights-config/#_instrumentationkey

Para los proyectos ASP.NET Core, las estadísticas de la aplicación están activadas por defecto, lo que realmente registra una tonelada de información en la ventana de depuración.

Para desactivarlo, vaya a “HERRAMIENTAS -> Opciones -> Proyectos y soluciones -> Proyectos web” y marque “Desactivar las estadísticas de aplicaciones locales para los proyectos web de Asp.Net Core”.

A continuación se muestra la imagen para deshabilitar las estadísticas de la aplicación local.

Imagen

Para obtener más información sobre el problema, puede ver el problema oficial de Github aquí.

Acabo de tener el mismo problema.

Queríamos controlar la configuración en web.config así que agregamos una clave DisableAITelemetry dentro de la configuración de nuestra aplicación:

     

Con construcciones en vivo y de demostración, no incluiremos un valor (por lo que su valor predeterminado es falso).

Entonces podríamos resolverlo agregando esto:

 bool disable; string disableAiTelemetry = ConfigurationManager.AppSettings["DisableAITelemetry"]; bool.TryParse(disableAiTelemetry, out disable); TelemetryConfiguration.Active.DisableTelemetry = disable; 

He decidido usar ambos enfoques. He movido el InstrumentationKey al Web.config y será reemplazado por la transformación de Web.Release.config o Web.Debug.config . (no olvide eliminarlo del archivo ApplicationInsights.config ). Luego he llamado a este método desde Application_Start()

 public static void RegisterTelemetryInstrumentationKey() { if (string.IsNullOrWhiteSpace(WebConfigurationManager.AppSettings["TelemetryInstrumentationKey"]) { TelemetryConfiguration.Active.DisableTelemetry = true; } else { TelemetryConfiguration.Active.InstrumentationKey = AppSettings.TelemetryInstrumentationKey; } } 

En una aplicación ASP.NET Core, puede agregar lo siguiente a Startus.cs para desactivar Application Insights en el entorno de desarrollo:

 if (env.IsDevelopment()) { TelemetryConfiguration.Active.DisableTelemetry = true; } 

Agregue esto al constructor, justo después del builder.AddApplicationInsightsSettings(); comando y ya no verá los registros de AI obstruyendo su consola de depuración.

Un juego ligeramente diferente en algunas de las otras soluciones. Pon esto en tu global.asax:

 Microsoft.ApplicationInsights.Extensibility.Implementation.TelemetryDebugWriter.IsTracingDisabled = Debugger.IsAttached; 

Desactivará la salida de depuración de las aplicaciones cuando se ejecute en el depurador, pero lo permitirá en escenarios de Ctrl + F5 y las comstackciones de depuración publicadas en los servidores de prueba

Hemos encontrado que la manera más fácil de evitar que se rastree en el registro de depuración es tan simple como:

 Extensibility.Implementation.TelemetryDebugWriter.IsTracingDisabled = True 

Microsoft.ApplicationInsights.AspNetCore versión 2.1

 services.AddApplicationInsightsTelemetry(options => { options.EnableDebugLogger = false; });