В настоящее время я пытаюсь настроить Application Insights для WebApi, работающего на Service Fabri c. Хотя это очень легко настроить для приложения. NET Core, для приложения. NET Classi c это кажется намного сложнее.
Официальные документы содержат только довольно примитивный способ настройки Application Insights, нажав Visual Studio - что в итоге не сработало для меня (он попытался добавить ссылку на. NET Core Nuget Package для Application Insights).
Важные факты о проект
- TargetFramework is net461
- Приложение работает на Service Fabri c 6.5.664.9590
Что я пробовал до сих пор
В моем проекте я ссылался на эти три пакета nuget:
- Microsoft.ApplicationInsights.Web
- Microsoft.ApplicationInsights.DependencyCollector
Содержимое ApplicationInsights.config (я добавил его в root проекта)
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector" />
</TelemetryModules>
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.Web.OperationNameTelemetryInitializer, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.Web.OperationIdTelemetryInitializer, Microsoft.AI.Web" />
</TelemetryInitializers>
</ApplicationInsights>
В Startup.cs , я перезаписываю ключ инструментария - потому что По-разному, в зависимости от среды, в которой выполняется приложение (подробнее об этом здесь )
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddAuthentication(...);
TelemetryConfiguration.Active.InstrumentationKey = _applicationInsightSettings.InstrumentationKey;
}
Однако - трассировки запросов или любая другая информация не отправляются в Application Insights. Чего мне не хватает?
Редактировать
Конфигурационная часть работает - при отладке приложения я вижу, что свойство TelemetryInitializers
в TelemetryConfiguration.Active
установлено то, что я настроил в ApplicationInsight.config
. Но ничего не отправляется в ApplicationInsights, и также не возникает никаких ошибок или исключений.
Мое решение
Оказывается, самым простым решением было избавиться от ограничения целевой структуры net461
. Зависимость, которую я использовал (пакет NuGet), ограничивала меня для использования net461
. Как только я избавился от этой зависимости и переместил приложение в. NET Core and boom - все работает просто волшебно.