Попытался собрать различные лучшие практики для использования Insights Application. Начиная с проектов ASP .NET MVC и Web API, а также в том числе различные предложения, собранные от сообщества и команды Insights Insights.
Включение приложений в проекте .NET Web API - это довольно простая задача, и с Visual Studio 2015 он так же просто, как тикание флажок в новом шаблоне проекта, или через выпадающее меню в каждом веб -проекте. Вы также можете добавить его, добавив пакет Microsoft.ApplicationInsIss.web Nuget вместе с 6 другими зависимостями. Приложения Insights также поможет вам отслеживать ваш прогресс в адаптировании через расширение Application Insights, которое является частью VS15 и VS17. Однако все еще может быть работа, необходимая для максимизации вашего опыта искусственного интеллекта.
Одна из важных функций в приложении Insights - это просмотр всей телеметрии для той же операции, которая по сути означает, что для действия веб -API каждое пользовательское событие, зависимость, исключение, трассировку должны быть связаны с запросом. К сожалению, это не совсем работает для нескольких асинхровых сценариев. После небольшого тестирования я наблюдал, что корреляция не удалась в двух сценариях:
Любой асихронный вызов зависимости (httpclient, sql -вызовы и т. Д.)
await ( new HttpClient ( ) ) . GetAsync ( "http://www.github.com" ) ;Любая телеметрия, зарегистрированная на фоновом потоке (включая пользовательские события, исключения и т. Д.)
Task . Run ( async ( ) =>
{
telemetryClient . TrackEvent ( "SampleCustomEventOnBackgroundThread" ) ;
telemetryClient . TrackException ( new System . InvalidOperationException ( "Background Thread Exception" ) ) ;
} ) ;