Запросите трассировку с помощью Application Insight для ASP. NET WebApi, работающего в Service Fabric - PullRequest
0 голосов
/ 07 января 2020

В настоящее время я пытаюсь настроить 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 - все работает просто волшебно.

...