2016-07-07 3 views
0

Ich habe eine MVC-Webanwendung. Es initialisiert Testdaten in einer Datenbank während Application_Start() während der Ausführung in der Debug-Konfiguration bedingt. Diese Initialisierung ist äußerst langsam, anscheinend dank eines Mitentwicklers, der Application Insights Tracking zum Projekt hinzufügt. Sie sehen, über Entity Framework jedes Mal, wenn wir an die DB zu speichern, wir schlagen jetzt das folgende auf der Aufrufliste:Sie müssen verhindern, dass Application Insights beim Debuggen in einer Webanwendung initialisiert wird

System.Web.dll!System.Web.HttpContext.Request.get() 
Microsoft.AI.Web.dll!Microsoft.ApplicationInsights.Web.Implementation.HttpContextExtensions.GetRequest(System.Web.HttpContext context) 
Microsoft.AI.Web.dll!Microsoft.ApplicationInsights.Web.Implementation.WebTelemetryInitializerBase.Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry) 
Microsoft.ApplicationInsights.dll!Microsoft.ApplicationInsights.TelemetryClient.Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry) 

HttpContext.Request.Get() !!! Kein Scherz, das wird langsam. Wir machen viele Einsparungen während der Datenpopulation. Zugegeben, hier gibt es Optimierungen, aber das ist eine haarige Kugel voller Unordnung, die ich nicht geschrieben habe und lieber vermeiden würde, aufzuschlagen.

Grundsätzlich möchte ich, dass Application Insights keine Webanfragen mehr ausführt. Vorzugsweise würde es beim debuggen überhaupt nichts tun, aber solange es gut funktioniert, macht es mir nichts aus. Ich habe versucht Einstellung:

TelemetryConfiguration.Active.DisableTelemetry = true; 

aber dies wirkt sich offenbar nicht, was Codepfad TelemetryClient.Initialize wird() aufrufen. Irgendwelche Zeiger?

+0

verwirrt ..... alles was man tut, ist das HttpContext.Request Objekt zuzugreifen; Es führt keine Web-Anfragen für Remote-Dienste aus. Sind Sie sicher, dass das der Flaschenhals ist? – tomasr

+0

@tomasr, Nein, ich bin mir nicht sicher. Ich stelle fest, dass * jedes Mal * ich breche, während ich aufgehängt bin, bin ich in diesem Anruf (ungefähr 5 Sekunden, um jedes Mal zurückzukehren). Ich gehe davon aus, dass dies bedeutet, dass ich die meiste Zeit hier verbringe. Du hast recht, das ist der Immobilien-Getter. Nicht sicher, warum es so langsam wäre. Ich schätze, es ist eine faule Last. – ChiralMichael

+0

Mögliches Duplikat von http://StackOverflow.com/a/23254776/4848251 –

Antwort

3

Der beste Weg, um AI zu stoppen, ist die Verwendung eines web.config transform für Ihre Debug-Konfiguration, um es zu entfernen. Dadurch wird sichergestellt, dass es für keine Web-Anfragen registriert wird.

Inhalt von Web.Debug.config

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.web> 
     <httpModules> 
     <add xdt:Transform="Remove" xdt:Locator="Match(name)" name="ApplicationInsightsWebTracking" /> 
     </httpModules> 
    </system.web> 
    <system.webServer> 
    <modules> 
     <add xdt:Transform="Remove" xdt:Locator="Match(name)" name="ApplicationInsightsWebTracking" /> 
    </modules> 
    </system.webServer> 
</configuration> 
+0

Schön! Genau das, wonach ich suche. Ich habe nicht an diesen Winkel gedacht. – ChiralMichael

+1

Einige Kommentare für die Nachwelt: Ich musste auch die Einstellung des Instrumentation Key in einem #if DEBUG konditionieren. Offensichtlich löst JEDE Initialisierung von Application Insights das Verhalten aus, das ich gesehen habe. Beachten Sie außerdem, dass Transformationen standardmäßig nicht lokal ausgeführt werden. Aktivieren Sie sie über den folgenden Text: https://gist.github.com/EdCharbeneau/9135216 – ChiralMichael

Verwandte Themen