Wie kann ich Application Insights bei Verwendung einer Debug-Konfiguration automatisch deaktivieren und nur bei Veröffentlichung aktivieren?
Ist dies möglich, ohne einen anderen Instrumentierungsschlüssel nur für das Debuggen zu erstellen?
Ich habe trackevent
Anweisungen im ganzen Code verteilt, sie in eine Debug-Präprozessor-Prüfung einzuschließen, ist keine ideale Lösung.
Meine aktuelle Lösung ist die festlegen Build Action
der ApplicationInsights.config
Datei auf , None
damit sie nicht kopiert wird in das Ausgabeverzeichnis des Projektes, aber das ist nicht ein Prozess, der auf der Basis der aktiven Build - Konfiguration automatisiert werden kann.
Es gibt einen Entwicklermodus, der jedoch manuell geändert werden muss (wenn es möglich war, die Konfigurationsdatei unter bestimmten Bedingungen festzulegen, wurde auch das gelöste Problem mit dem Instrumentierungsschlüssel geleert). Siehe http://apmtips.com/blog/2015/02/02/developer-mode/
quelle
WindowsAppInitializer.InitializeAsync();
(ich habe es auch danach versucht), aber der Ereigniszähler für Einblicke in Visual Studio-Anwendungen hat zugenommen. Ich konnte nicht sehen, ob diese Sitzung effektiv im Azure-Portal aufgezeichnet wurde, da zu viele Sitzungen und Benutzer vorhanden sind. Ich werde es in der Nacht versuchen.Als Ergänzung zu den anderen Lösungen würde ich vorschlagen, Folgendes hinzuzufügen
Global.asax
: Sagen wir :Dies hat den Vorteil, dass keine Änderungen an den Konfigurationen erforderlich sind und es mit einigen Tools wie ReSharper besser funktioniert, die es besser verstehen als
#
-directives.quelle
Conditional
Attribut -attribute zu ersetzen .Für ASP.NET Core-Projekte sind die App Insights standardmäßig aktiviert, wodurch tatsächlich eine Menge Informationen im Debug-Fenster protokolliert werden.
Um es zu deaktivieren, gehen Sie zu "WERKZEUGE -> Optionen -> Projekte und Lösungen -> Webprojekte" und aktivieren Sie "Lokale Application Insights für Asp.Net Core-Webprojekte deaktivieren".
Unten sehen Sie das Bild zum Deaktivieren lokaler App Insights.
Weitere Informationen zu diesem Problem finden Sie in der offiziellen Github-Ausgabe hier
quelle
Wie in der Frage erläutert, wird keine ApplicationInsights.config bereitgestellt oder bereitgestellt, ohne
<instrumentationkey>key</instrumentationkey>
dass Blockereignisse generiert werden. Sie können dann den Instrumentierungsschlüssel in den Code einfügen (in meinem Fall nur bei Veröffentlichung).Jeder,
TelemetryClient
der nach diesem Aufruf erstellt wird, hat den richtigen Schlüssel und verfolgt Ereignisse, sodass Sie den Code nicht an allen Stellen ändern müssen. Wenn Sie die obige Methode nicht aufrufen oder den Parameter leer lassen, werden Ereignisse blockiert, da kein Schlüssel konfiguriert ist.Grundsätzlich
ApplicationInsights.config
überschreibt die Datei jeden Code, der den Instrumentierungsschlüssel festlegt. Wenn Sie den<instrumentationkey>key</instrumentationkey>
darin enthaltenen Code entfernen , können Sie den Schlüssel mit Code konfigurieren. Wenn Sie die Datei vollständig entfernen, funktioniert es nicht.Hier ist die Bestätigung: "Wenn Sie den Schlüssel dynamisch festlegen möchten, z. B. wenn Sie Ergebnisse aus Ihrer Anwendung an verschiedene Ressourcen senden möchten, können Sie den Schlüssel in der Konfigurationsdatei weglassen und stattdessen im Code festlegen."
Referenz: https://azure.microsoft.com/en-us/documentation/articles/app-insights-configuration-with-applicationinsights-config/#_instrumentationkey
quelle
ApplicationInsights.Debug/Release.config
Ich habe mich für beide Ansätze entschieden. Ich habe das
InstrumentationKey
nach verschobenWeb.config
und es wird durch die Transformation vonWeb.Release.config
oder ersetztWeb.Debug.config
. (Vergessen Sie nicht, es aus derApplicationInsights.config
Datei zu entfernen ). Dann habe ich diese Methode aus dem aufgerufenApplication_Start()
quelle
Beim Ausführen einer ASP.NET Core 2.1-Webanwendung mit Visual Studio 2017 (15.9.2) wurde durch "Deaktivieren lokaler Anwendungserkenntnisse für Asp.Net Core-Webprojekte" die Ausgabe in meinem Debug-Fenster nicht gelöscht.
Das Hinzufügen von Folgendem zu Configure () in Startup.cs hat den Job jedoch erledigt.
Beachten Sie, dass IsTracingDisabled die Schlüssellösung war , aber ich habe DisableTelemetry für ein gutes Maß verlassen! Außerdem ist es hilfreich, beide Zeilen nebeneinander zu haben, wenn Sie nach ähnlichen Referenzen zwischen .NET Framework- und .NET Core-Projekten in derselben Lösung suchen.
quelle
Ich hatte gerade das gleiche Problem.
Wir wollten die Einstellung in der web.config steuern und haben daher in unseren App-Einstellungen einen DisableAITelemetry-Schlüssel hinzugefügt:
Bei Live- und Demo-Builds wird kein Wert eingefügt (daher wird standardmäßig false verwendet).
Wir könnten es dann lösen, indem wir Folgendes hinzufügen:
quelle
Etwas anderes Spiel bei einigen anderen Lösungen. Fügen Sie dies in Ihre global.asax ein:
Die Debug-Ausgabe von App Insights wird deaktiviert, wenn sie unter dem Debugger ausgeführt wird. Sie kann jedoch unter Strg + F5-Szenarien und auf Testservern veröffentlichten Debug-Builds zugelassen werden
quelle
In einer ASP.NET Core-Anwendung können Sie Startus.cs Folgendes hinzufügen, um Application Insights in der Entwicklungsumgebung zu deaktivieren:
Wenn Sie dies direkt nach dem
builder.AddApplicationInsightsSettings();
Befehl zum Konstruktor hinzufügen, werden keine AI-Protokolle mehr angezeigt, die Ihre Debug-Konsole verstopfen.quelle
Wir haben festgestellt, dass der einfachste Weg, um zu verhindern, dass es in das Debug-Protokoll zurückverfolgt wird, so einfach ist wie:
quelle
Microsoft.ApplicationInsights.AspNetCore Version 2.1
quelle
Application Insights Telemetry (unconfigured)
Nachrichten aus dem Debug-Bereich in Visual Studio verbergen - denn wenn ja, scheint es nicht zu funktionieren :-(TelemetryDebugWriter.IsTracingDisabled = true;
diese entfernen.quelle
Seit .NET Core 3.1:
quelle