【问题标题】:visual studio 2015 vshub is spamming fiddler视觉工作室 2015 vshub 是垃圾邮件提琴手
【发布时间】:2016-02-23 13:25:39
【问题描述】:

我已阅读: How do I disable VsHub.exe in the system tray? 和 https://connect.microsoft.com/VisualStudio/feedback/details/1919828/hundreds-of-calls-second-to-vshub-and-browserlink-is-off

我宁愿不禁用 vshub;当我使用提琴手时,我只是希望它更安静。现在它会将其他所有内容都发送出去,我无法进行一般调试。

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

【问题讨论】:

    标签: visual-studio-2015 fiddler


    【解决方案1】:

    这是一个相对较新的问题,因为 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 并稍后再次启动它,它仍将被设置。

    【讨论】:

    • 谢谢,@Anson。隐藏这些大量请求将使 Fiddler 再次可用。但这当然仍然是一个严重的问题。它还让您想知道为什么 Visual Studio 或任何随后与之相关的进程首先提出这些请求(反语)。如果您对此也感到不便,请在MS Connect bug #1919828 和/或ASP.NET MVC issue #3655 上投票。
    • 只需添加即可使用||如果您想隐藏其他请求(如 browserlink),请在“如果 URL 包含时隐藏”框中的运算符。
    • @Moriarty re: ...why Visual Studio is making these requests ...嗯,这是因为进程通过环回适配器上的 HTTP 相互通信。 .这种流量已经产生了“一段时间”;它最近才被更改为默认情况下对 HTTP 代理可见......所以我不确定你为什么会认为这是一个错误。
    • 这是 Visual Studio 2015 中新的远程调试工具的副作用,我很确定。特别是与 Apple 设备上 Cordova 的跨平台调试有关,我会进一步打赌。他们可能以一种允许他们稍后将其扩展到其他平台的方式构建这些更改,从而进行全局更改。
    • 这不是正确的解决方案。它只是隐藏了问题。下面在VS中调试时去掉诊断工具的解决方案才是真正的解决方案。
    【解决方案2】:

    解决此问题的最简单方法是在 fiddler 中设置过滤器。在 OnBeforeResponse 中,使用您的 vshub 主机/端口添加第二个 if:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 这是正确的解决方案。它立即摆脱了所有垃圾邮件。现在我不关心 CPU/内存,我需要我的提琴手保持清洁,这样我才能正确使用它。非常感谢 Alex 的修复。
      • 这只会帮助一次,但您可以在此处禁用 Vusial Studio 中的“诊断工具”:工具 -> 选项 -> 调试 -> 常规 -> 复选框“调试时启用诊断工具”
      • 我似乎找不到“选择工具”下拉菜单(在 Visual Studio 2015 中)。知道它在哪里吗?
      • @PerLundberg 如果您找不到“选择工具”,请尝试以下 Brian 的答案(与这些 cmets 中的 Andrey 相同)。现在这是我的首选解决方案,它只是让内存/CPU 监控一直处于禁用状态。如果我需要它,我知道如何启用它。
      • 请注意,如果您在调试会话中并且执行了 Alex 的选项,虽然您的内存/CPU 监控将停止,但在您停止并重新启动调试会话之前,请求不会!很难找到这一点。
      【解决方案4】:

      SpokaneDJ 的回答对我很有帮助,而且效果很好,但我没有花很多时间在 Fiddler 上,所以我花了一分钟才记住如何做到这一点!以下是具体说明。


      首先,在 Fiddler UI 中,转到 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
          }
        }
      

      【讨论】:

        【解决方案5】:

        因此,上述内容对我不起作用。它似乎关闭了 localhost 主机的所有提琴手监控。

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

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

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

        【讨论】:

        • 您应该提及您所指的“上述”答案,因为这里的答案可能会根据多种因素上下变化。
        • 公平点。当时它适用于所有其他解决方案,但此后似乎增加了更多。以后我会牢记这一点。
        【解决方案6】:

        对我来说,停止向 Fiddler4 发送“垃圾邮件”而不是 Fiddler 过滤器的解决方法是更改​​ Visual Studio 2015 选项:

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

        VSHUB.exe 服务必须是在调试时协助诊断工具的服务,并不断 ping 您正在调试的网站/webapi/web 应用程序。我不需要调试。此时的诊断工具,所以我只是在 Visual Studio 中禁用它

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

        How do I disable VsHub.exe in the system tray?

        【讨论】:

        • @BrianOgden Phew!谢谢你。最后,一个 VS 2015 的答案。 Visual Studio 的菜单在每个版本中都发生了很大变化。突然间,这个工具——VsHub——变得不稳定,我不知道为什么。使用 Windows 10 自动更新,我可能不知道。
        • 注意任何这样做的人,如果你在调试会话中间这样做,你的请求将不会停止在 Fiddler 中被捕获,直到你停止并重新启动你的调试会话。
        【解决方案7】:

        这是隐藏 vshub 流量的一种更简单的替代方法。

        转到工具 > Fiddler 选项 > 连接选项卡并将http://localhost:49155 添加到绕过列表。这将跳过发布到该 URL 的所有流量。

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

        【讨论】:

        • 此更改仅在我重新启动 Fiddler 后应用。
        • @Bassem,我的也不需要重启。
        【解决方案8】:

        The issue is caused by Visual Studio's Diagnostic Tools while debugging.

        您可以通过工具 ➜ 选项禁用它们,然后按照以下步骤操作:

        【讨论】:

        • 漂亮的图形。不过,布赖恩·奥格登(Brian Ogden)已经击败了您-重复的答案。请注意任何这样做的人,如果您在调试会话中间执行此操作,您的请求将不会停止在 Fiddler 中被捕获,直到您停止并重新启动调试会话。
        • @vapcguy 我得承认我的答案并没有不同,但我是第一个发布图片的人。布赖恩后来编辑了他的答案以包含图形。不过没关系,只要人们得到他们的答案。
        猜你喜欢
        • 2016-06-02
        • 1970-01-01
        • 2016-02-11
        • 1970-01-01
        • 2016-02-05
        • 2016-12-09
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多