Visual Studio 2015 vshub spammt Geiger

201

Ich habe gelesen: Wie deaktiviere ich VsHub.exe in der Taskleiste? und https://connect.microsoft.com/VisualStudio/feedback/details/1919828/hundreds-of-calls-second-to-vshub-and-browserlink-is-off

Ich würde es vorziehen, vshub nicht zu deaktivieren. Ich möchte nur, dass es leiser wird, wenn ich Geiger benutze. Im Moment spammt es alles andere aus und ich kann kein allgemeines Debuggen durchführen.

Kennt jemand eine Problemumgehung? Kann ich verhindern, dass vshub im Geiger auftaucht, ohne den Rest von locahost zu blockieren?

Greg Netland
quelle

Antworten:

268

Dies ist ein relativ neues Problem, da System.NET die Proxyeinstellungen für localhost ignoriert hat und Fiddler daher den Datenverkehr standardmäßig nicht sieht ( http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp ). - siehe unterer Abschnitt.

Jetzt scheint dies nicht mehr der Fall zu sein, daher erwarte ich, dass mehr Menschen die gleiche Frage haben werden. Fiddler unterstützt verschiedene Möglichkeiten zum Filtern von Anforderungen, obwohl der Client nichts steuern kann (was wahrscheinlich gut ist, da Sie nicht möchten, dass Malware den Datenverkehr ausschließt). Der am besten geeignete und einfachste Mechanismus in diesem Fall besteht wahrscheinlich darin, einen Filter für jede URL festzulegen, die localhost oder vshub enthält. Sie können dies tun durch:

  1. Klicken Sie auf die Registerkarte Filter (eine Registerkarte der obersten Ebene, auf derselben Ebene wie Inspektoren, Statistiken usw.).
  2. Aktivieren Sie das Kontrollkästchen "Filter verwenden".
  3. Scrollen Sie nach unten und suchen Sie das Kontrollkästchen "Ausblenden, wenn URL enthält".
  4. Aktivieren Sie dieses Kontrollkästchen und geben Sie entweder localhost oder vshub in das zugehörige Textfeld ein.
  5. Sie sollten sehen, dass der vshub-Verkehr sofort stoppt.

Dieser Filter bleibt bestehen. Wenn Sie also Fiddler herunterfahren und später erneut starten, wird er weiterhin festgelegt.

Anson Horton
quelle
4
Danke, @Anson. Wenn Sie diese große Anzahl von Anfragen ausblenden, kann Fiddler wieder verwendet werden. Aber das bleibt natürlich immer noch ein ernstes Problem. Sie fragen sich auch, warum Visual Studio oder ein später damit zusammenhängender Prozess diese Anforderungen überhaupt erst stellt (retorisch). Wenn Ihnen dies ebenfalls unangenehm ist, stimmen Sie entweder über den MS Connect-Fehler Nr. 1919828 und / oder über das ASP.NET MVC-Problem Nr. 3655 ab .
Juliën
4
Nur um hinzuzufügen, können Sie das || verwenden Operator im Feld "Ausblenden, wenn URL enthält", wenn Sie andere Anforderungen wie Browserlink ausblenden möchten.
Nick Spicer
4
@ Moriarty re: ...why Visual Studio is making these requests... nun, das liegt daran, dass die Prozesse über HTTP auf dem Loopback-Adapter miteinander kommunizieren. . Dieser Verkehr wurde nun "eine Weile" lang generiert. Es wurde erst kürzlich geändert, dass es standardmäßig für HTTP-Proxys sichtbar ist. Ich bin mir also nicht sicher, warum Sie dies als Fehler betrachten würden.
K. Alan Bates
2
Ich bin mir ziemlich sicher, dass dies ein Nebeneffekt der neuen Remote-Debugging-Tools in Visual Studio 2015 ist. Insbesondere im Zusammenhang mit dem plattformübergreifenden Debuggen für Cordova auf Apple-Geräten würde ich weiter wetten. Sie haben diese Änderungen wahrscheinlich so erstellt, dass sie sie später auf andere Plattformen ausweiten können, daher die globale Änderung.
Bon
1
Dies ist nicht die richtige Lösung. Es verbirgt nur das Problem. Die folgenden Lösungen zum Entfernen von Diagnosetools beim Debuggen in VS sind die richtige Lösung.
Rafi
132

Diese Anforderungen scheinen aus dem Fenster Diagnosetools zu stammen, das beim Debuggen ausgeführt wird. Scheint, als würden sie die Überwachungsinformationen für die Speichernutzung und die CPU-Auslastung bereitstellen.

Sie können die Anforderungen stoppen, wenn Sie die Nutzungsinformationen nicht anzeigen möchten, indem Sie die Speicher- / CPU-Überwachung im Dialogfeld Diagnosetools deaktivieren.

  • Öffnen Sie das Fenster Diagnosetools (Debug -> Windows -> Diagnosetools anzeigen).
  • Klicken Sie auf die Dropdown-Liste "Tools auswählen" und deaktivieren Sie die Speicherauslastung und die CPU-Auslastung.
  • Beenden Sie das Debuggen, und wenn Sie das nächste Mal mit dem Debuggen beginnen, sollten die an vshub gestellten Anforderungen nicht mehr angezeigt werden
Alex
quelle
10
Das ist die richtige Lösung. Die gesamte Spam-Nachricht wurde sofort entfernt. Im Moment kümmere ich mich nicht um CPU / Speicher, ich brauche meinen Geiger, um sauber zu bleiben, damit ich ihn richtig verwenden kann. So groß Danke an dich Alex für dieses Update.
Pic Mickael
6
Dies wird nur einmal helfen, aber Sie können "Diagnosetools" in Vusial Studio hier deaktivieren: Extras -> Optionen -> Debuggen -> Allgemein -> Kontrollkästchen "Diagnosetools beim Debuggen aktivieren"
Andrey Prokhorov
1
Ich kann das Dropdown-Menü "Tools auswählen" (in Visual Studio 2015) anscheinend nicht finden. Irgendeine Idee, wo es ist?
Per Lundberg
1
@PerLundberg Wenn Sie "Select Tools" nicht finden können, versuchen Sie es mit Brians Antwort unten (wie die von Andrey in diesen Kommentaren). Dies ist jetzt meine bevorzugte Lösung, um die Speicher- / CPU-Überwachung ständig deaktiviert zu halten. Wenn ich es brauche, weiß ich, wie ich es aktivieren kann.
Alex
Beachten Sie, dass wenn Sie sich in einer Debug-Sitzung befinden und die Option von Alex ausführen, während die Speicher- / CPU-Überwachung beendet wird, die Anforderungen erst dann ausgeführt werden, wenn Sie die Debug-Sitzung beenden und neu starten! Fand das auf die harte Tour heraus.
Vapcguy
88

Für mich bestand die Korrektur, um das "Spammen" an Fiddler4 anstelle eines Fiddler-Filters zu stoppen, für den ich mich hätte entscheiden können, darin, eine Visual Studio 2015-Option zu ändern:

Visual Studio 2015 -> Tools -> Optionen -> Debugging -> Allgemein -> Deaktivieren / Deaktivieren Sie "Diagnosetools beim Debuggen aktivieren".

Geben Sie hier die Bildbeschreibung ein

Der VSHUB.exe-Dienst muss der Dienst sein, der Diagnosetools beim Debuggen unterstützt und Ihre Website / Webapi / Web-App, die Sie debuggen, kontinuierlich anpingt. Ich brauche kein Debuggen. Diagnosetools zu diesem Zeitpunkt, daher habe ich es gerade in Visual Studio deaktiviert

In Bezug auf das Deaktivieren von VSHUB.exe war ich versucht, dies zu tun, bis ich von jemandem bei Microsoft gelesen habe, dass es am besten ist, es nicht zu deaktivieren, um eine bessere Visual Studio 2015-Erfahrung zu erzielen, und Visual Studio neue Funktionen hinzufügt, die VSHUB.exe verwenden Zeit:

Wie deaktiviere ich VsHub.exe in der Taskleiste?

Brian Ogden
quelle
@ BrianOgden Puh! Danke dir. Endlich eine VS 2015 Antwort. Die Menüs von Visual Studio haben sich in den einzelnen Versionen stark verändert. Plötzlich wurde dieses Tool - VsHub - wackelig, und ich weiß nicht warum. Mit automatischen Updates für Windows 10 könnte dies ohne mein Wissen geschehen sein.
Octopusgrabbus
Hinweis: Wenn Sie dies während einer Debug-Sitzung tun, werden Ihre Anforderungen erst dann in Fiddler erfasst, wenn Sie die Debug-Sitzung beenden und neu starten.
Vapcguy
21

Das Problem wird durch die Diagnosetools von Visual Studio beim Debuggen verursacht.

Sie können sie deaktivieren , um , indem Sie ExtrasOptionen und nach dann die Schritte: Geben Sie hier die Bildbeschreibung ein

Sergey
quelle
Schöne Grafik. Brian Ogden hat Sie jedoch bereits geschlagen - doppelte Antwort. Hinweis: Wenn Sie dies während einer Debug-Sitzung tun, werden Ihre Anforderungen erst dann in Fiddler erfasst, wenn Sie die Debug-Sitzung beenden und neu starten.
Vapcguy
@vapcguy Ich muss zugeben, dass meine Antwort nicht anders ist, aber ich war der erste, der eine Grafik gepostet hat . Brian bearbeitete seine Antwort später, um die Grafik aufzunehmen. Es ist aber in Ordnung, solange die Leute ihre Antworten bekommen.
Sergey
20

Dies ist eine einfachere Alternative, um den vshub-Verkehr auszublenden.

Gehen Sie zu Extras> Geigeroptionen> Registerkarte Verbindungen und fügen Sie http://localhost:49155sie der Umgehungsliste hinzu. Dadurch wird der gesamte an diese URL gepostete Datenverkehr übersprungen.

* Bearbeiten: Fiddler muss möglicherweise nach dem Hinzufügen zur Bypass-Liste neu gestartet werden.

mikro
quelle
2
Diese Änderung wurde erst angewendet, nachdem ich Fiddler neu gestartet habe.
Bassem
@Bassem, es auch ohne Neustart für meine.
Smit Patel
9

Der einfachste Weg, dies zu beheben, besteht darin, einen Filter in Fiddler einzurichten. Fügen Sie in der OnBeforeResponse die zweite hinzu, wenn Sie mit Ihrem vshub-Host / Port arbeiten:

  static function OnBeforeResponse(oSession: Session) {
    if (m_Hide304s && oSession.responseCode == 304) {
        oSession["ui-hide"] = "true";
    }

    if (oSession.HostnameIs("localhost:49155")){
        oSession["ui-hide"] = "hiding vshub"; // String value not important
    }


    }
SpokaneDJ
quelle
2

Die Antwort von SpokaneDJ war sehr hilfreich für mich und hat großartig funktioniert, aber ich verbringe nicht viel Zeit mit Fiddler, daher habe ich eine Minute gebraucht, um mich daran zu erinnern, wie das geht! Hier sind die spezifischen Anweisungen.


Gehen Sie zunächst in der Fiddler-Benutzeroberfläche zu Rules> Customize Rules. Suchen Sie nach der OnBeforeResponseFunktion. Es sollte so aussehen:

static function OnBeforeResponse(oSession: Session) {
  if (m_Hide304s && oSession.responseCode == 304) {
    oSession["ui-hide"] = "true";
  }
}

Fügen Sie nun den folgenden if Block nach dem vorhandenen hinzu (ersetzen Sie Ihren vshub-Host / Port, falls abweichend):

    if (oSession.HostnameIs("localhost:49155")){
      oSession["ui-hide"] = "hiding vshub"; // String value not important
    }

Ihre OnBeforeResponseFunktion sollte nun folgendermaßen aussehen:

  static function OnBeforeResponse(oSession: Session) {
    if (m_Hide304s && oSession.responseCode == 304) {
        oSession["ui-hide"] = "true";
    }

    if (oSession.HostnameIs("localhost:49155")){
        oSession["ui-hide"] = "hiding vshub"; // String value not important
    }
  }
Brian Lacy
quelle
0

Das obige hat bei mir als solches nicht funktioniert. Es schien die Überwachung aller Geiger des lokalen Hosts zu beenden.

Ein bisschen umsichtiges googeln gab mir eine andere Lösung - den Port spezifisch zu blockieren, indem ich dies am Ende des OnBeforeRequest-Abschnitts hinzufügte:

if (oSession.host=="localhost:49155"){
    oSession["ui-hide"] = "true";
}

Dies scheint zu verhindern, dass der Port in Fiddler gemeldet wird, ohne den weiteren lokalen Host-Verkehr zu stören.

Rich Howard
quelle
1
Sie sollten angeben, welche Antwort Sie als "oben" bezeichnen, da sich die Antworten hier aufgrund mehrerer Faktoren nach oben und unten verschieben können.
Sergey
Gutes Argument. Zu der Zeit galt es für alle anderen Lösungen, aber es scheint, dass seitdem mehr hinzugefügt wurden. Ich werde das in Zukunft berücksichtigen.
Rich Howard