Jak mogę automatycznie wyłączyć szczegółowe informacje o aplikacji podczas korzystania z konfiguracji debugowania i włączyć ją tylko w momencie wydania?
Czy można to zrobić bez tworzenia innego klucza instrumentacji tylko do debugowania?
Mam trackevent
instrukcje rozrzucone po całym kodzie, zamykanie ich wewnątrz sprawdzania preprocesora debugowania nie jest idealnym rozwiązaniem.
Moje obecne rozwiązanie jest ustawienie Build Action
z ApplicationInsights.config
pliku None
tak, że nie jest kopiowany do katalogu wyjściowego projektu, ale nie jest to proces, który można zautomatyzować na podstawie aktywnej konfiguracji kompilacji.
Istnieje tryb programisty, ale należy go zmienić ręcznie (jeśli możliwe było warunkowe ustawienie pliku konfiguracyjnego, opróżnienie klucza instrumentu również rozwiązało problem). Zobacz http://apmtips.com/blog/2015/02/02/developer-mode/
źródło
WindowsAppInitializer.InitializeAsync();
(próbowałem też po nim), ale licznik zdarzeń insights aplikacji Visual Studio wzrósł. Nie udało mi się sprawdzić, czy ta sesja została skutecznie zarejestrowana w Azure Portal, ponieważ jest zbyt dużo sesji i użytkowników. Spróbuję w nocy.Jako dodatek do innych rozwiązań proponuję dodać, powiedzmy, do
Global.asax
:Zaletą tego jest to, że nie wymaga zmiany konfiguracji i działa lepiej z niektórymi narzędziami, takimi jak ReSharper, które zrozumieją to lepiej niż
#
-directives.źródło
Conditional
-attribute.W przypadku projektów ASP.NET Core usługa App Insights jest domyślnie włączona, co w rzeczywistości rejestruje mnóstwo informacji w oknie debugowania.
Aby go wyłączyć, przejdź do „NARZĘDZIA -> Opcje -> Projekty i rozwiązania -> Projekty sieci Web” i zaznacz opcję „Wyłącz lokalne Application Insights dla projektów sieci Web Asp.Net Core”.
Poniżej znajduje się obraz do wyłączania lokalnych statystyk aplikacji.
Więcej informacji na ten temat można znaleźć w oficjalnym wydaniu Github tutaj
źródło
Jak wyjaśniono w pytaniu, nie należy wdrażać ani wdrażać ApplicationInsights.config bez
<instrumentationkey>key</instrumentationkey>
generowania zdarzeń blokowania. Następnie możesz umieścić klucz instrumentacji w kodzie (tylko po zwolnieniu w moim przypadku)Każdy
TelemetryClient
utworzony po tym wywołaniu będzie miał prawidłowy klucz i będzie śledził zdarzenia, więc nie musisz zmieniać kodu we wszystkich miejscach. Niewywołanie powyższej metody lub pozostawienie pustego parametru spowoduje zablokowanie zdarzeń, ponieważ nie ma skonfigurowanego klucza.Zasadniczo
ApplicationInsights.config
plik zastępuje dowolny kod, który ustawił klucz Instrumentacji, usunięcie jego<instrumentationkey>key</instrumentationkey>
wnętrza umożliwi użycie kodu do skonfigurowania klucza. Jeśli usuniesz plik całkowicie, to nie zadziała.Oto potwierdzenie: „Jeśli chcesz ustawić klucz dynamicznie - na przykład jeśli chcesz wysłać wyniki z aplikacji do różnych zasobów - możesz pominąć klucz w pliku konfiguracyjnym i zamiast tego ustawić go w kodzie”.
Źródła: https://azure.microsoft.com/en-us/documentation/articles/app-insights-configuration-with-applicationinsights-config/#_instrumentationkey
źródło
ApplicationInsights.Debug/Release.config
Zdecydowałem się zastosować oba podejścia. Przeniosłem
InstrumentationKey
doWeb.config
i zostanie zastąpiony przez transformację zWeb.Release.config
lubWeb.Debug.config
. (nie zapomnij usunąć go zApplicationInsights.config
pliku). Następnie nazwałem tę metodę zApplication_Start()
źródło
Uruchamianie aplikacji internetowej ASP.NET Core 2.1 z programem Visual Studio 2017 (15.9.2) „Wyłączanie usługi Local Application Insights dla projektów sieci Web Asp.Net Core” nie wyczyściło danych wyjściowych w moim oknie debugowania.
Jednak dodanie następujących elementów do Configure () w Startup.cs wykonało zadanie;
Zauważ, że IsTracingDisabled był kluczowym rozwiązaniem , ale zostawiłem DisableTelemetry na dobre! Ponadto umieszczenie obu wierszy obok siebie jest pomocne podczas wyszukiwania podobnych odniesień między projektami .NET Framework i .NET Core w tym samym rozwiązaniu.
źródło
Właśnie miałem ten sam problem.
Chcieliśmy kontrolować ustawienie w web.config, więc dodaliśmy klucz DisableAITelemetry w ustawieniach naszej aplikacji:
W przypadku kompilacji na żywo i wersji demonstracyjnych nie będziemy uwzględniać wartości (więc domyślnie jest to false).
Moglibyśmy to rozwiązać, dodając to:
źródło
Nieco inaczej grają niektóre inne rozwiązania. Umieść to w swoim global.asax:
Wyłączy dane wyjściowe debugowania statystyk aplikacji, gdy działa w debugerze, ale zezwoli na scenariusze Ctrl + F5 i kompilacje debugowania opublikowane do testowania serwerów
źródło
W aplikacji ASP.NET Core można dodać następujące elementy do pliku Startus.cs, aby wyłączyć usługę Application Insights w środowisku programistycznym: In an ASP.NET Core application, you can add the following to the Startus.cs to turn off Application Insights in the Development environment:
Dodaj to do konstruktora, zaraz po
builder.AddApplicationInsightsSettings();
poleceniu, a nie będziesz już widzieć dzienników AI zatykających konsolę debugowania.źródło
Znaleźliśmy najprostszy sposób, aby zapobiec śledzeniu go w dzienniku debugowania, jest tak prosty, jak:
źródło
Microsoft.ApplicationInsights.AspNetCore w wersji 2.1
źródło
Application Insights Telemetry (unconfigured)
komunikaty z panelu Debug w Visual Studio - bo jeśli tak, to nie działa :-(TelemetryDebugWriter.IsTracingDisabled = true;
je usunąć.źródło
Od .NET Core 3.1:
źródło
Od ASP.NET Core 3.1:
(powyższe można wywołać z dowolnego miejsca, ale im szybciej w cyklu życia aplikacji, tym lepiej).
Oba mogą być używane razem, aby pomijać wszystkie działania Application Insights w kodzie.
#if DEBUG
Chronię za pomocą dyrektywy, aby upewnić się, że AppInsights nic nie robi na moim komputerze lokalnym, ale emituje zdarzenia po przekazaniu na nasz serwer deweloperski platformy Azure:źródło