J'ai essayé de rassembler diverses meilleures pratiques pour utiliser les informations d'application. En commençant par les projets ASP .NET MVC et API Web et incluant diverses suggestions recueillies auprès de la communauté et de l'équipe Application Insights.
Inclure les informations d'application dans un projet API Web .NET est une tâche assez facile et avec Visual Studio 2015, il est aussi simple que de cocher une case à cocher dans le nouveau modèle de projet, ou via le menu déroulant dans chaque projet Web. Vous pouvez également l'ajouter en ajoutant le package Microsoft.ApplicationInsights.Web Nuget ainsi que 6 autres dépendances. Application Insights vous aidera également à suivre vos progrès intégrés via l'extension des informations d'application qui fait partie de VS15 et VS17. Cependant, il pourrait encore y avoir des travaux nécessaires pour maximiser votre expérience d'IA.
L'une des fonctionnalités importantes de l'application Insights est de visualiser toute la télémétrie pour la même opération, ce qui signifie essentiellement que pour une action d'API Web, chaque événement personnalisé, dépendance, exception, la trace doit tous être liés à la demande. Malheureusement, cela ne fonctionne pas tout à fait pour quelques scénarios asynchrones. Après un peu de test, j'ai observé l'échec de la corrélation dans deux scénarios:
Tout appel de dépendance asychrone (httpclient, appels SQL, etc.)
await ( new HttpClient ( ) ) . GetAsync ( "http://www.github.com" ) ;Toute télémétrie connectée à un fil d'arrière-plan (y compris les événements personnalisés, les exceptions, etc.)
Task . Run ( async ( ) =>
{
telemetryClient . TrackEvent ( "SampleCustomEventOnBackgroundThread" ) ;
telemetryClient . TrackException ( new System . InvalidOperationException ( "Background Thread Exception" ) ) ;
} ) ;