Отключить Application insights в отладке
как я могу отключить Application insights автоматически при использовании конфигурации отладки и включить его только при выпуске?
Можно ли это сделать без создания другого ключа инструментирования только для отладки?
У меня есть trackevent операторы разбросаны по всему коду, заключая их внутри проверки препроцессора отладки не является идеальным решением.
мое текущее решение-установить Build Action на до None Так что он не копируется в выходной каталог проекта, но это не процесс, который может быть автоматизирован на основе активной конфигурации сборки.
есть режим разработчика, но его нужно изменить вручную (если можно было условно установить конфигурационный файл, опустошив instrumentationkey, а также решить проблему). Смотрите http://apmtips.com/blog/2015/02/02/developer-mode/
10 ответов:
вы можете попробовать использовать телеметрическая конфигурация.DisableTelemetry собственность Что-то вроде этого..
#if DEBUG TelemetryConfiguration.Active.DisableTelemetry = true; #endif
В дополнение к другим решениям я бы предложил добавить следующее, скажем, к
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, которые поймут его лучше, чем
#-директив.
как объяснено в вопросе не развертывание или развертывание ApplicationInsights.конфиг без
<instrumentationkey>key</instrumentationkey>блокировать создание событий. Затем вы можете поместить ключ инструментирования в код (только при выпуске в моем случае)#if !DEBUG Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = "instrumentation key"; #endifкаждый
TelemetryClientсоздал после этого вызова будет иметь правильный ключ и отслеживать события, так что вам не придется менять код во всех местах. Не вызывая метод выше или оставляя параметр пустым будет блокировать события, потому что нет ключа сконфигурированный.в основном
ApplicationInsights.configфайл переопределяет любой код, который устанавливает ключ инструментирования, удаляя<instrumentationkey>key</instrumentationkey>внутри он позволит вам использовать код для настройки ключа. если вы удалите файл полностью он не работает.вот подтверждение: "Если вы хотите установить ключ динамически - например, если вы хотите отправить результаты из вашего приложения на разные ресурсы - вы можете опустить ключ из файла конфигурации и установить его в коде вместо."
для ASP.NET основные проекты App Insights включены по умолчанию, что фактически регистрирует тонну информации в окне отладки.
чтобы отключить его, перейдите в раздел "Инструменты - > Параметры -> проекты и решения - > веб-проекты" и установите флажок " Отключить локальные Application Insights для Asp.Net основные веб-проекты."
Ниже приведен образ для отключения локального приложения insights.
для получения дополнительной информации по этому вопросу вы можете увидеть Официальный вопрос github здесь
у меня только что была такая же проблема.
мы хотели контролировать настройки в интернете.config поэтому добавил ключ DisableAITelemetry в настройках нашего приложения:
<appSettings> <add key="DisableAITelemetry" value="true" /> </appSettings>С живыми и демонстрационными сборками мы не будем включать значение (так что по умолчанию оно равно false).
мы могли бы решить эту проблему, добавив следующее:
bool disable; string disableAiTelemetry = ConfigurationManager.AppSettings["DisableAITelemetry"]; bool.TryParse(disableAiTelemetry, out disable); TelemetryConfiguration.Active.DisableTelemetry = disable;
я решил использовать оба подхода. Я переместил
InstrumentationKeyдоWeb.configи он будет заменен преобразованием изWeb.Release.configилиWeb.Debug.config. (не забудьте удалить его изApplicationInsights.configfile). Тогда я вызвал этот метод изApplication_Start()public static void RegisterTelemetryInstrumentationKey() { if (string.IsNullOrWhiteSpace(WebConfigurationManager.AppSettings["TelemetryInstrumentationKey"]) { TelemetryConfiguration.Active.DisableTelemetry = true; } else { TelemetryConfiguration.Active.InstrumentationKey = AppSettings.TelemetryInstrumentationKey; } }
в an ASP.NET основное приложение, вы можете добавить следующее к стартапам.cs для отключения Application Insights в среде разработки:
if (env.IsDevelopment()) { TelemetryConfiguration.Active.DisableTelemetry = true; }добавьте это в конструктор, сразу после
builder.AddApplicationInsightsSettings();команда, и вы больше не будете видеть журналы AI, засоряющие вашу консоль отладки.
немного другая игра на некоторых других решениях. Поместите это в свой глобальный.асакс:
Microsoft.ApplicationInsights.Extensibility.Implementation.TelemetryDebugWriter.IsTracingDisabled = Debugger.IsAttached;он отключит вывод отладки App insights при запуске под отладчиком, но разрешит его в сценариях Ctrl+F5 и отладочных сборках, опубликованных для тестирования серверов
мы нашли самый простой способ предотвратить его трассировку в журнал отладки так же просто, как:
Extensibility.Implementation.TelemetryDebugWriter.IsTracingDisabled = True
Microsoft.ApplicationInsights.AspNetCore Версии 2.1
services.AddApplicationInsightsTelemetry(options => { options.EnableDebugLogger = false; });

Comments