Как я могу автоматически отключить аналитику приложений при использовании конфигурации отладки и включить ее только при выпуске?
Можно ли сделать это без создания другого ключа инструментария только для отладки?
У меня есть trackevent
операторы, разбросанные по всему коду, и включение их в проверку препроцессора отладки не является идеальным решением.
Мое текущее решение для установки Build Action
в ApplicationInsights.config
файл , чтобы None
таким образом , что он не копируется в выходном каталог проекта, но это не процесс , который может быть автоматизирован на основе активной конфигурации сборки.
Существует режим разработчика, но его необходимо изменить вручную (если можно было условно установить файл конфигурации, очистив также решенную проблему с помощью инструментария). См. Http://apmtips.com/blog/2015/02/02/developer-mode/
источник
WindowsAppInitializer.InitializeAsync();
(я также пробовал после него), но счетчик событий в Visual Studio Insights увеличился. Мне не удалось увидеть, был ли этот сеанс эффективно записан на лазурном портале, потому что существует слишком много сеансов и пользователей. Я попробую ночью.В дополнение к другим решениям я бы предложил добавить следующее, скажем, к
Global.asax
:Преимущество этого метода в том, что он не требует изменения конфигураций и лучше работает с некоторыми инструментами, такими как ReSharper, который поймет его лучше, чем
#
-directives.источник
Conditional
атрибуте -attribute.Для проектов ASP.NET Core App Insights по умолчанию включен, что фактически записывает тонны информации в окно отладки.
Чтобы отключить его, перейдите в «ИНСТРУМЕНТЫ -> Параметры -> Проекты и решения -> Веб-проекты» и установите флажок «Отключить локальный Application Insights для веб-проектов Asp.Net Core».
Ниже показано изображение для отключения статистики локальных приложений.
Для получения дополнительной информации о проблеме вы можете увидеть официальную проблему github здесь
источник
Как объясняется в вопросе, не развертывать или развертывать ApplicationInsights.config без
<instrumentationkey>key</instrumentationkey>
создания событий блокировки. Затем вы можете поместить ключ инструментария в код (только при выпуске в моем случае)Каждый
TelemetryClient
созданный после этого вызова будет иметь правильный ключ и будет отслеживать события, поэтому вам не нужно менять код во всех местах. Если не вызвать вышеуказанный метод или оставить параметр пустым, события будут заблокированы, поскольку не настроен ключ.В основном
ApplicationInsights.config
файл переопределяет любой код, который устанавливает ключ инструментария, удаление его<instrumentationkey>key</instrumentationkey>
внутри позволит вам использовать код для настройки ключа. Если вы удалите файл полностью, он не сработает.Вот подтверждение: «Если вы хотите установить ключ динамически - например, если вы хотите отправлять результаты из вашего приложения в разные ресурсы - вы можете опустить ключ из файла конфигурации и вместо этого установить его в коде».
Ссылка: https://azure.microsoft.com/en-us/documentation/articles/app-insights-configuration-with-applicationinsights-config/#_instrumentationkey
источник
ApplicationInsights.Debug/Release.config
Я решил использовать оба подхода. Я переехал
InstrumentationKey
кWeb.config
и он будет заменен преобразованием изWeb.Release.config
илиWeb.Debug.config
. (не забудьте удалить его изApplicationInsights.config
файла). Затем я вызвал этот метод изApplication_Start()
источник
При запуске веб-приложения ASP.NET Core 2.1 с Visual Studio 2017 (15.9.2) параметр «Отключить локальные сведения о приложениях для веб-проектов Asp.Net Core» не очищал вывод в моем окне отладки.
Однако добавление следующего в Configure () в Startup.cs сделало свою работу;
Обратите внимание, что IsTracingDisabled был ключевым решением , но я оставил DisableTelemetry на всякий случай! Кроме того, наличие обеих строк рядом друг с другом полезно при поиске похожих ссылок между проектами .NET Framework и .NET Core в одном решении.
источник
У меня была такая же проблема.
Мы хотели управлять настройкой в web.config, поэтому добавили ключ DisableAITelemetry в настройки нашего приложения:
В реальных и демонстрационных сборках мы не будем включать значение (поэтому по умолчанию оно равно false).
Затем мы могли бы решить эту проблему, добавив это:
источник
Немного другая игра по некоторым другим решениям. Поместите это в свой global.asax:
Он отключит вывод отладочной информации о приложении при работе в отладчике, но разрешит его в сценариях Ctrl + F5 и отладочных сборках, опубликованных на тестовых серверах.
источник
В приложении ASP.NET Core вы можете добавить следующее в Startus.cs, чтобы отключить Application Insights в среде разработки:
Добавьте это в конструктор сразу после
builder.AddApplicationInsightsSettings();
команды, и вы больше не увидите, как журналы AI забивают вашу консоль отладки.источник
Мы нашли самый простой способ предотвратить его отслеживание в журнале отладки:
источник
Microsoft.ApplicationInsights.AspNetCore версии 2.1
источник
Application Insights Telemetry (unconfigured)
сообщения с панели отладки в Visual Studio - потому что в этом случае это не работает :-(TelemetryDebugWriter.IsTracingDisabled = true;
их удалить.источник
Начиная с .NET Core 3.1:
источник
Начиная с ASP.NET Core 3.1:
(вышеуказанное можно вызвать из любого места, но чем раньше в жизненном цикле вашего приложения, тем лучше).
Оба могут использоваться вместе для подавления всех действий Application Insights в вашем коде. Я
#if DEBUG
охраняю директиву, гарантирующую, что AppInsights ничего не делает на моем локальном компьютере, но генерирует события при загрузке на наш сервер разработки Azure:источник