Подтвердить что ты не робот

Отключить поиск приложений в отладочном

Как я могу автоматически отключить информацию о приложениях при использовании конфигурации отладки и включить ее только при выпуске?
Возможно ли это сделать, не создавая другого инструментального ключа только для отладки?

У меня есть выражения trackevent, разбросанные по всему коду, и их включение внутри проверки отладочного препроцессора не является идеальным решением.

Мое текущее решение - установить Build Action файла ApplicationInsights.config на None, чтобы он не копировался в выходной каталог проекта, но это не процесс, который может быть автоматизирован на основе активной сборки конфигурации.

Существует режим разработчика, но его нужно изменить вручную (если можно было условно установить файл конфигурации, опустошив также проблему с инструментальной клавишей). См. http://apmtips.com/blog/2015/02/02/developer-mode/

Ссылка: http://blogs.msdn.com/b/visualstudioalm/archive/2015/01/07/application-insights-support-for-multiple-environments-stamps-and-app-versions.aspx

4b9b3361

Ответ 1

Как объясняется в вопросе не развертывания или развертывания событий ApplicationInsights.config без <instrumentationkey>key</instrumentationkey> от генерирования событий. Затем вы можете поместить ключ инструментария в код (только при выпуске в моем случае)

#if !DEBUG
    Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = "instrumentation key";
#endif

Каждый TelemetryClient, созданный после этого вызова, будет иметь правильный ключ и будет отслеживать события, поэтому вам не придется менять код во всех местах. Не вызывать метод выше или оставить этот параметр пустым, будут блокировать события, потому что не настроен ключ.

В основном файл ApplicationInsights.config переопределяет любой код, который устанавливает ключ инструментария, удаляя <instrumentationkey>key</instrumentationkey> внутри него, позволит вам использовать код для настройки ключа. Если вы полностью удалите файл, он не будет работать.

Вот подтверждение: "Если вы хотите установить ключ динамически - например, если вы хотите отправить результаты из вашего приложения на разные ресурсы, вы можете опустить ключ из файла конфигурации и вместо этого установить его в коде."

Ссылка: https://azure.microsoft.com/en-us/documentation/articles/app-insights-configuration-with-applicationinsights-config/#_instrumentationkey

Ответ 2

Вы можете попробовать использовать TelemetryConfiguration.DisableTelemetry Свойство Что-то вроде этого.

#if DEBUG
            TelemetryConfiguration.Active.DisableTelemetry = true;
#endif

Ответ 3

В качестве дополнения к другим решениям я бы предложил добавить следующие слова: Global.asax:

protected void Application_Start()
{    
    DisableApplicationInsightsOnDebug();
    // do the other stuff
}

/// <summary>
/// Disables the application insights locally.
/// </summary>
[Conditional("DEBUG")]
private static void DisableApplicationInsightsOnDebug()
{
    TelemetryConfiguration.Active.DisableTelemetry = true;
}

Преимущество этого заключается в том, что он не нуждается в изменениях в конфигурациях, и он лучше работает с некоторыми инструментами, такими как ReSharper, которые будут лучше понимать его, чем # -directives.

Ответ 4

Для проектов ASP.NET Core App Insights включены по умолчанию, что фактически записывает тонны информации в окно отладки.

Чтобы отключить его, перейдите в "ИНСТРУМЕНТЫ → Параметры → Проекты и решения → Веб-проекты" и установите флажок "Отключить локальные сведения о приложении для веб-проектов Asp.Net Core".

Ниже приведено изображение для отключения информации о локальных приложениях.

Image

Для получения дополнительной информации о проблеме вы можете увидеть официальный выпуск GitHub здесь

Ответ 5

Я решил использовать оба подхода. Я переместил InstrumentationKey в Web.config и он будет заменен преобразованием из Web.Release.config или Web.Debug.config. (не забудьте удалить его из файла ApplicationInsights.config). Затем я вызвал этот метод из Application_Start()

public static void RegisterTelemetryInstrumentationKey()
{
    if (string.IsNullOrWhiteSpace(WebConfigurationManager.AppSettings["TelemetryInstrumentationKey"])
    {
        TelemetryConfiguration.Active.DisableTelemetry = true;
    }
    else
    {
        TelemetryConfiguration.Active.InstrumentationKey = AppSettings.TelemetryInstrumentationKey;
    }
}

Ответ 6

У меня была такая же проблема.

Мы хотели контролировать настройку в web.config, поэтому добавили ключ DisableAITelemetry в наши настройки приложения:

  <appSettings>
    <add key="DisableAITelemetry" value="true" />
  </appSettings>

С живыми и демонстрационными сборками мы не будем включать значение (так, чтобы оно по умолчанию было ложным).

Затем мы могли бы решить эту проблему, добавив следующее:

bool disable;
string disableAiTelemetry = ConfigurationManager.AppSettings["DisableAITelemetry"];
bool.TryParse(disableAiTelemetry, out disable);
TelemetryConfiguration.Active.DisableTelemetry = disable;

Ответ 7

В приложении ASP.NET Core вы можете добавить следующее в Startus.cs, чтобы отключить Application Insights в среде разработки:

if (env.IsDevelopment()) {
    TelemetryConfiguration.Active.DisableTelemetry = true;
}

Добавьте это в конструктор сразу после команды builder.AddApplicationInsightsSettings();, и вы больше не увидите журналы ИИ, засоряющие консоль отладки.

Ответ 8

Немного отличается от некоторых других решений. Поместите это в свой global.asax:

Microsoft.ApplicationInsights.Extensibility.Implementation.TelemetryDebugWriter.IsTracingDisabled = Debugger.IsAttached;

Он отключит вывод отладки от приложения при запуске под отладчиком, но разрешит его в сценариях Ctrl + F5 и отладочные сборки, опубликованные для тестирования серверов

Ответ 9

Мы обнаружили, что самый простой способ предотвратить его отслеживание в журнале отладки так же просто, как:

Extensibility.Implementation.TelemetryDebugWriter.IsTracingDisabled = True

Ответ 10

При запуске веб-приложения ASP.NET Core 2.1 с Visual Studio 2017 (15.9.2) "Отключение локальных сведений о приложении для веб-проектов Asp.Net Core" не удалось очистить вывод в моем окне отладки.

Однако добавление следующего к Configure() в Startup.cs сделало свою работу;

if (_env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    TelemetryConfiguration.Active.DisableTelemetry = true;
    TelemetryDebugWriter.IsTracingDisabled = true;
}

Обратите внимание, что IsTracingDisabled был ключевым решением, но я оставил в DisableTelemetry для хорошей меры! Кроме того, наличие обеих строк рядом друг с другом полезно при поиске похожих ссылок между проектами .NET Framework и .NET Core в одном решении.

Ответ 11

Microsoft.ApplicationInsights.AspNetCore Version 2.1

services.AddApplicationInsightsTelemetry(options =>
{
    options.EnableDebugLogger = false;
});

Ответ 12

         public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            #region Disable Application Insights debug informations
#if DEBUG
            TelemetryConfiguration.Active.DisableTelemetry = true;
            TelemetryDebugWriter.IsTracingDisabled = true;
#endif
            #endregion
//...
}