¿Cómo puedo deshabilitar la información de la aplicación automáticamente cuando utilizo una configuración de depuración y habilitarla solo en el lanzamiento?
¿Es posible hacer esto sin crear otra clave de instrumentación solo para depuración?
Tengo trackevent
declaraciones esparcidas por todo el código, incluirlas dentro de una verificación de preprocesador de depuración no es una solución ideal.
Mi solución actual es establecer el Build Action
del ApplicationInsights.config
archivo a None
fin de que no se copia en el directorio de salida del proyecto, pero esto no es un proceso que puede ser automatizada basada en la configuración de generación activa.
Hay un modo de desarrollador, pero debe cambiarse manualmente (si fue posible configurar condicionalmente el archivo de configuración, vaciar también el problema resuelto de la clave de instrumentación). Ver http://apmtips.com/blog/2015/02/02/developer-mode/
fuente
WindowsAppInitializer.InitializeAsync();
(también lo intenté después) pero el contador de eventos de información de la aplicación de Visual Studio aumentó. No pude ver si esta sesión se registró efectivamente en el portal azure porque hay demasiadas sesiones y usuarios. Lo intentaré durante la noche.Como una adición a las otras soluciones, sugeriría agregar lo siguiente, digamos a
Global.asax
:La ventaja de esto es que no necesita cambios en las configuraciones y funciona mejor con algunas herramientas como ReSharper, que lo entenderán mejor que las
#
directivas.fuente
Conditional
atributo.Para los proyectos de ASP.NET Core, App Insights está ACTIVADO de forma predeterminada, lo que en realidad registra una tonelada de información en la ventana de depuración.
Para deshabilitarlo, vaya a "HERRAMIENTAS -> Opciones -> Proyectos y soluciones -> Proyectos web" y marque "Deshabilitar información de aplicaciones locales para proyectos web Asp.Net Core".
A continuación se muestra la imagen para deshabilitar la información de la aplicación local.
Para obtener más información sobre el problema, puede ver el problema oficial de github aquí.
fuente
Como se explica en la pregunta, no implementar o implementar un ApplicationInsights.config sin
<instrumentationkey>key</instrumentationkey>
bloquear la generación de eventos. Luego puede poner la clave de instrumentación en el código (solo en el lanzamiento en mi caso)Todos los
TelemetryClient
creados después de esta llamada tendrán la clave correcta y realizarán 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
ApplicationInsights.config
archivo anula cualquier código que establezca la clave de instrumentación, eliminar el<instrumentationkey>key</instrumentationkey>
interior 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 el código".
Referencia: https://azure.microsoft.com/en-us/documentation/articles/app-insights-configuration-with-applicationinsights-config/#_instrumentationkey
fuente
ApplicationInsights.Debug/Release.config
He decidido utilizar ambos enfoques. He movido el
InstrumentationKey
aWeb.config
y será reemplazado por la transformación deWeb.Release.config
oWeb.Debug.config
. (no olvide eliminarlo delApplicationInsights.config
archivo). Entonces he llamado a este método desde elApplication_Start()
fuente
Al ejecutar una aplicación web ASP.NET Core 2.1 con Visual Studio 2017 (15.9.2), la opción "Deshabilitar información de aplicación local para proyectos web Asp.Net Core" no borró el resultado en mi ventana de depuración.
Sin embargo, agregar lo siguiente a Configure () en Startup.cs hizo el trabajo;
Tenga en cuenta que IsTracingDisabled fue la solución clave , ¡pero lo dejé en DisableTelemetry por si acaso! Además, tener ambas líneas una al lado de la otra es útil cuando se buscan referencias similares entre proyectos de .NET Framework y .NET Core en la misma solución.
fuente
Acabo de tener el mismo problema.
Queríamos controlar la configuración en web.config, por lo que agregamos una clave DisableAITelemetry dentro de la configuración de nuestra aplicación:
Con las compilaciones en vivo y de demostración, no incluiremos un valor (por lo que el valor predeterminado es falso).
Luego podríamos resolverlo agregando esto:
fuente
Juego ligeramente diferente en algunas de las otras soluciones. Pon esto en tu global.asax:
Desactivará la salida de depuración de la información de la aplicación cuando se ejecute en el depurador, pero lo permitirá en escenarios de Ctrl + F5 y depurará las compilaciones publicadas en los servidores de prueba.
fuente
En una aplicación ASP.NET Core, puede agregar lo siguiente a Startus.cs para desactivar Application Insights en el entorno de desarrollo:
Agregue esto al constructor, justo después del
builder.AddApplicationInsightsSettings();
comando y ya no verá registros de IA obstruyendo su consola de depuración.fuente
Hemos encontrado que la forma más sencilla de evitar que se rastree en el registro de depuración es tan simple como:
fuente
Microsoft.ApplicationInsights.AspNetCore Versión 2.1
fuente
Application Insights Telemetry (unconfigured)
mensajes del panel de depuración en Visual Studio, porque si es así no parece funcionar :-(TelemetryDebugWriter.IsTracingDisabled = true;
eliminarlos.fuente
Desde .NET Core 3.1:
fuente
A partir de ASP.NET Core 3.1:
(lo anterior se puede llamar desde cualquier lugar, pero cuanto antes en el ciclo de vida de su aplicación, mejor).
Ambos se pueden usar juntos para suprimir toda la actividad de Application Insights en su código. Me
#if DEBUG
guardo con una directiva para asegurarme de que AppInsights no haga nada en mi máquina local, pero sí emite eventos cuando se carga en nuestro servidor de desarrollo de Azure:fuente