Intenté reunir varias mejores prácticas para usar información de aplicación. Comenzando con los proyectos ASP .NET MVC y Web API e incluyendo varias sugerencias reunidas de la comunidad y el equipo de Aplicación Insights.
La inclusión de información de la aplicación en un proyecto de API web .NET es una tarea bastante fácil y con Visual Studio 2015 en adelante es tan fácil como marcar una casilla de verificación en la nueva plantilla de proyecto, o a través del menú desplegable en cada proyecto web. También puede agregarlo agregando el paquete Microsoft.ApplicationInsights.web Nuget junto con otras 6 dependencias. Aplicación Insights también lo ayudará a rastrear su progreso de incorporación a través de la extensión de la aplicación Insights, que forma parte de VS15 y VS17. Sin embargo, puede que aún se necesite trabajo para maximizar su experiencia de IA.
Una de las características importantes en la aplicación Insights es ver toda la telemetría para la misma operación, lo que esencialmente significa que para una acción de API web, cada evento personalizado, dependencia, excepción y traza deben estar vinculados con la solicitud. Lamentablemente, esto no funciona para algunos escenarios de asíncrono. Después de un poco de prueba, he observado el fracaso de la correlación en dos escenarios:
Cualquier llamada de dependencia asicrónica (httpclient, llamadas SQL, etc.)
await ( new HttpClient ( ) ) . GetAsync ( "http://www.github.com" ) ;Cualquier telemetría registrada en un hilo de fondo (incluidos eventos personalizados, excepciones, etc.)
Task . Run ( async ( ) =>
{
telemetryClient . TrackEvent ( "SampleCustomEventOnBackgroundThread" ) ;
telemetryClient . TrackException ( new System . InvalidOperationException ( "Background Thread Exception" ) ) ;
} ) ;