visual studio 2015 vshub垃圾邮件提琴手


201

我已阅读: 如何禁用系统托盘中的VsHub.exe?https://connect.microsoft.com/VisualStudio/feedback/details/1919828/hundreds-of-calls-second-to-vshub-and-browserlink-is-off

我宁愿不禁用vshub;我只是希望在使用提琴手时更加安静。现在,它会将所有其他内容拒之门外,并且我无法进行常规调试。

有人知道解决方法吗?我可以阻止vshub出现在提琴手中,而不会阻止locahost的其余部分吗?

Answers:


268

这是一个相对较新的问题,因为System.NET过去常常忽略localhost的代理设置,因此Fiddler在默认情况下不会看到流量(http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp) -见底部。

现在似乎不再是这种情况了,所以我希望更多的人会遇到同样的问题。Fiddler支持多种过滤请求的方式,尽管客户端无法控制任何方式(这可能很好,因为您不希望恶意软件排除其流量)。在这种情况下,最合适,最简单的机制可能是为包含localhost或vshub的任何URL设置一个过滤器。您可以通过以下方式做到这一点:

  1. 点击过滤器标签(这是顶层标签,与检查员,统计信息等处于同一级别),
  2. 选中标记为“使用过滤器”的复选框
  3. 向下滚动并找到标记为“如果URL包含则隐藏”的复选框。
  4. 选中该框,然后在随附的文本框中输入localhost或vshub。
  5. 您应该看到vshub通信立即停止。

该过滤器将持续存在,因此,如果您关闭Fiddler并在以后再次启动,它仍将被设置。


4
谢谢,@安森。隐藏这些大量的请求将使Fiddler再次可用。但是,当然,这仍然是一个严重的问题。这也使您想知道为什么 Visual Studio或其后续任何相关过程首先发出这些请求(纵向)。如果您对此也感到不便,请对MS Connect错误#1919828和/或通过ASP.NET MVC问题#3655添加投票。
朱利安

4
只需添加即可使用||。如果您想隐藏其他请求(如浏览器链接),请在“隐藏包含URL的框中”操作符。
尼克·斯派塞

4
@Moriarty re: ...why Visual Studio is making these requests...嗯,这是因为进程正在通过回送适配器上的HTTP相互通信。。现在已经“一段时间”产生了该流量;只是最近才进行了更改,默认情况下它对HTTP代理可见。因此,我不确定您为什么会将此视为错误。
K. Alan Bates

2
我敢肯定,这是Visual Studio 2015中新的远程调试工具的副作用。特别是与在Apple设备上进行Cordova的跨平台调试有关,我会进一步下注。他们可能以允许他们以后将其扩展到其他平台的方式构建了这些更改,从而进行了全局更改。
Bon

1
这不是正确的解决方案。它只是隐藏了问题。下面的解决方案是在VS中进行调试时删除诊断工具的真正解决方案。
拉菲

132

这些请求似乎来自调试时运行的“诊断工具”窗口。似乎它们提供了“内存使用率”和“ CPU使用率”的监视信息。

如果您不想查看使用情况信息,可以通过在“诊断工具”对话框中禁用“内存/ CPU监视”来停止请求。

  • 打开诊断工具窗口(调试-> Windows->显示诊断工具)
  • 单击“选择工具”下拉菜单,然后取消选中“内存使用率和CPU使用率”。
  • 停止调试,下次您开始调试时,您应该不再看到对vshub的请求

10
那是正确的解决方案。它立即消除了所有垃圾邮件消息。现在我不在乎CPU /内存,我需要提琴手保持清洁,以便可以正确使用它。非常感谢Alex的修复。
Pic Mickael 2015年

6
这只会提供一次帮助,但您可以在Vusial Studio中禁用“诊断工具”:工具->选项->调试->常规->复选框“在调试时启用诊断工具”
Andrey Prokhorov

1
我似乎找不到“选择工具”下拉列表(在Visual Studio 2015中)。知道它在哪里吗?
Per Lundberg

1
@PerLundberg如果您找不到“选择工具”,请在下面尝试Brian的答案(与这些评论中的Andrey相同)。现在,这是我首选的解决方案,只是始终禁用内存/ CPU监视。如果需要,我知道如何启用它。
Alex

请注意,如果您在调试会话中并且执行Alex的选项,则在内存/ CPU监视将停止的同时,请求将直到您停止并重新启动调试会话才停止!很难找到这一点。
vapcguy

88

对我而言,停止向Fiddler4发出“垃圾邮件”的方法(而不是我本可以选择的Fiddler过滤器)的解决方案是更改Visual Studio 2015选项:

Visual Studio 2015->工具->选项->调试->常规->取消选中/禁用“调试时启用诊断工具”

在此处输入图片说明

VSHUB.exe服务必须是在调试时辅助诊断工具并不断对正在调试的网站/ webapi / web应用执行ping操作的服务。我不需要调试。此时是诊断工具,因此我只是在Visual Studio中将其禁用

关于禁用VSHUB.exe,我很想这样做,直到我从微软的某个人那里读过,最好不要禁用它以获得更好的Visual Studio 2015体验,并且他们向Visual Studio添加了新功能,这些功能通过时间:

如何禁用系统托盘中的VsHub.exe?


@BrianOgden Phew!谢谢。最后,VS 2015的答案。在每个发行版中,Visual Studio的菜单都发生了很大变化。突然,这个工具-VsHub-变得不灵通,我不知道为什么。使用Windows 10自动更新,可能是我不知道的情况。
octopusgrabbus

请注意对于以这种方式进行操作的任何人,如果您在调试会话中间进行此操作,则在停止并重新启动调试会话之前,您的请求将不会停止在Fiddler中捕获。
vapcguy

21

该问题是由调试时的Visual Studio的诊断工具引起的。

您可以通过转到工具选项,然后按照以下步骤来禁用它们: 在此处输入图片说明


漂亮的图形。不过,布莱恩·奥格登(Brian Ogden)已经击败了您-重复的答案。请注意对于以这种方式进行操作的任何人,如果您在调试会话的中间进行此操作,则在停止并重新启动调试会话之前,您的请求不会停止在Fiddler中捕获。
vapcguy '18

@vapcguy我必须承认我的答案没什么不同,但我第一个发布图形的人。Brian后来编辑了答案,包括了图形。不过,只要人们得到答案,就可以了。
谢尔盖

20

这是隐藏vshub流量的更容易的选择。

转到工具>提琴手选项>连接选项卡,然后添加http://localhost:49155到旁路列表。这将跳过发布到该URL的所有流量。

*编辑:添加到旁路列表后,可能需要重新启动Fiddler。


2
仅在我重新启动Fiddler之后才应用此更改。
巴森

@Bassem,它也无需为我的重启。
Smit Patel

9

解决此问题的最简单方法是在提琴手中设置一个过滤器。在OnBeforeResponse中,将第二个if与vshub主机/端口一起添加:

  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
    }


    }

2

SpokaneDJ的回答对我非常有帮助,并且效果很好,但是我在Fiddler上花费的时间并不多,所以花了我一分钟的时间来记住如何做!以下是具体说明。


首先,在Fiddler用户界面中,转到Rules> Customize Rules。搜索OnBeforeResponse功能。它看起来应该像这样:

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

现在,在现有块之后添加以下 if块(如果不同,请替换您的vshub主机/端口):

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

您的OnBeforeResponse函数现在应如下所示:

  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
    }
  }

0

上面的内容对我不起作用,因此。似乎关闭了对本地主机的所有提琴手监视。

明智的谷歌搜索为我提供了另一个解决方案-通过将其添加到OnBeforeRequest部分的底部来专门阻止端口:

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

这似乎阻止了该端口在Fiddler中的报告,而不会中断进一步的localhost流量。


1
您应该提及被称为“以上”的答案,因为此处的答案会基于多种因素上下移动。
谢尔盖

有道理。当时它适用于所有其他解决方案,但此后似乎又增加了更多。将来我会记住这一点。
Rich Howard
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.