2016-08-15 2 views
3

Ich habe gerade Application Insights in meiner MVC-Anwendung aktiviert und festgestellt, dass beim lokalen Debugging die Trace-Informationen in meinem Azure Application Insight erfasst werden. Im Debug-Modus möchte ich verhindern, dass in meiner Anwendung die Ereignisse in meinem Azure Application Insight aufgezeichnet werden, aber die Ereignisse und Protokollierungsinformationen im Fenster Diagnosetools> Ereignisse in Visual Studio angezeigt werden.Application Insights im Debug-Modus

Ich habe Folgendes versucht, und während dies die Ereignisse in meinem Azure AI festgehalten, Visual Studio zeigt nicht mehr die Debug-Informationen im Fenster Ereignisse.

Ich habe das Netz für eine Antwort vergeblich gesurft. Hoffe jemand kann helfen.

Antwort

2

Der günstigste Weg, dies zu tun, ist, Ihren Instrumentierungsschlüssel auf alle Nullen zu setzen. Es gibt keine NULL-iKey, so dass es effektiv nur die Nachricht fallen lässt.

00000000-0000-0000-0000-000000000000 

Wenn Sie Application_Start() verwenden möchten, können Sie diese entweder tun, um die #DEBUG Richtlinie oder können Sie System.Diagnostics.Debugger.IsAttached Eigenschaft verwenden. Allerdings ist diese Methode nicht vollständig zuverlässig. Sie können es versuchen, aber Ihre Erfahrung ist möglicherweise nicht konsistent.

Wenn Sie die Zeit haben, sollten Sie eine TelemetryInitializer machen, die den Instrumentation Key basierend darauf ändern würde, ob der Debugger angeschlossen ist oder nicht. Dadurch wird sichergestellt, dass dies nur passiert, wenn Sie sich in einer Debugsitzung befinden. Auf diese Weise verlieren Sie Ihre Telemetrie nicht, wenn Sie den Debugger versehentlich in die Produktion freigeben.

public class CustomeWebRequestTelemetryModule : Microsoft.ApplicationInsights.Extensibility.ITelemetryInitializer 
{ 
    public void Initialize(ITelemetry telemetry) 
    { 
     if (telemetry != null && System.Diagnostics.Debugger.IsAttached) 
     { 
      telemetry.Context.InstrumentationKey = "00000000-0000-0000-0000-000000000000"; 
     } 
    } 
} 
+0

Das funktionierte perfekt und ist der Ansatz, nach dem ich gesucht habe. Vielen Dank. – jgill09

0

Worin besteht die Sorge, dass Sie die Telemetrie in Application Insights senden können? Sie können z. B. eine separate Application Insights-Ressource (anhand des Instrumentierungsschlüssels) verwenden, die nur für Ihre Debugging-Erfahrung verwendet wird. Wenn Sie in der Produktion sind, wechseln Sie den Instrumentierungsschlüssel, sodass er auf eine Produktionsressource verweist.

Alternativ haben wir vor Kurzem einen "lokalen Modus" eingeführt, mit dem Application Insights in Visual Studio ohne Verbindung zu Azure verwendet werden können. In diesem Fall bleibt die Telemetrie der letzten Debug-Sitzung auf Ihrem lokalen Computer erhalten und steht für die Suche und Integration in Diagnostics Hub zur Verfügung. Siehe hier: https://azure.microsoft.com/en-us/documentation/articles/app-insights-release-notes-vsix/#version-43

Ich glaube, dass, um dies zu erreichen, müssen Sie den Instrumentierungsschlüssel aus der applicationinsights.xml entfernen, aber ich bin nicht 100% sicher. Ich werde meine Kollegen bitten, weitere Informationen hier hinzuzufügen ... Lassen Sie uns wissen, wenn Sie danach suchen. Oleg

0

@DebugThings Antwort wird (meistens) arbeiten, obwohl, wenn Sie 0'en verwenden für die ikey, sind Sie wahrscheinlich noch Senden Telemetrie, aber es ist wahrscheinlich auch als ungültig durch den AI-Backend abgelehnt ikey.

Persönlich wäre die beste Lösung, eine separate "Debug" iKey zu erstellen, und in Code, wenn im Debug-Modus gebaut, verwenden Sie stattdessen iKey.

protected void Application_Start() 
{ 
    #if DEBUG 
    TelemetryConfiguration.Active.InstrumentationKey = "your debug ikey"; 
    #endif 
} 

Auf diese Weise können Sie „debug“ jede Telemetrie, die Sie ohne senden die Produktionsumgebung verschmutzen, und in Version baut, wird nach wie vor die iKey in Ihrer Konfigurationsdatei verwendet werden.So können Sie sicherstellen, dass Sie die richtigen benutzerdefinierten Eigenschaften/Messwerte senden, ohne die festgelegte feste Nummer zu verwenden.

Hier ist eine Blog-Post über Konfigurationen unter Verwendung von Daten an verschiedenen Orten je nach Umgebung zu senden, etc:

https://blogs.msdn.microsoft.com/visualstudioalm/2015/01/07/application-insights-support-for-multiple-environments-stamps-and-app-versions/

gibt es eine ähnliche Frage hier mit ähnlichen Antworten: Disable application insights in debug

Verwandte Themen