Visual Studio 2015 Update 1在本地主机上发送垃圾邮件

118

昨天我安装了Visual Studio 更新1,现在当我在本地IIS(不是express版本)上运行ASP.NET服务时,我看到每秒钟有数百个请求发送到地址

 http://localhost:49155/vshub/ca9dea4b016f45c68a6a8c1a07809eb4/DataWarehouseModule/dataWarehouse/getStatus/ 

这是什么原因造成的?能够预防吗?


30
VSHub是调试时显示实时CPU和内存使用情况的组件。您不必使用它,可以在“工具”>“选项”>“调试”>“常规”中取消勾选“调试时启用诊断工具”。或者您也可以享受这些好用的调试功能,不必为此感到烦恼。 - Hans Passant
5
使用 Fiddler 时出现问题很烦人... 感谢 KyleUp 提供了一个好的解决方案。 - Poku
可能是Visual Studio 2015 VSHub正在垃圾邮件Fiddler的重复问题。 - Michael Freidgeim
5个回答

109

防止 Fiddler 占用 CPU 的另一种选项是在 Fiddler 中编写规则来忽略这些请求。转到 Rules > Customize Rules...,找到 OnBeforeRequest 函数并添加。

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

所以我的看起来是这样的:

static function OnBeforeRequest(oSession: Session) {
    if(oSession.oRequest.headers["host"]=="localhost:49155"){
        oSession["ui-hide"] = "true";
    }
}

正如@matrixugly指出的那样,端口可能因VS版本不同而有所不同。 @tedd-hansen的解决方案可能更适用于所有版本的Visual Studio。

if(oSession.oRequest.headers["host"].StartsWith("localhost") 
    && oSession.PathAndQuery.StartsWith("/vshub/")) {
    oSession["ui-hide"] = "true";
}

这个问题在 Github 上有讨论,可以查看以更好地了解正在发生的事情;https://github.com/aspnet/Mvc/issues/3655

同样的问题还有一个 SO 帖子;visual studio 2015 vshub is spamming fiddler


2
今天早上我刚刚升级到了VS2015 Update 2,我的vshub请求现在是“localhost:49160”。不确定每个版本的VS是否使用不同的端口。可能可以更新条件以查看“host”是否以localhost开头,并且url以/vshub/开头。 - C. Tewalt

51

这是调试器向VSHub进程发送信息。这是两个进程之间的内部通信,以便调试器数据收集的一部分可以在进程外进行。

它有助于调试工具提示、性能信息、历史调试体验等方面。因此,没有办法关闭它,否则将严重削弱高级调试器功能。

您可以关闭其中的一些功能(尽管其他功能可能仍然依赖于Vshub在后台执行进程外的工作):

工具 > 选项 > 调试 > 常规 > [   ] 在调试时启用诊断工具

通信纯粹是本地的,不会带来严重的开销或问题。您想要摆脱它的特定原因吗?像Fiddler这样的工具可以配置为过滤进程,因此忽略此流量应该很简单。


2
我不想放弃任何新的调试功能。我只是发现自从昨天安装更新1以来,Fiddler和VS都使用了异常高的CPU资源,并注意到这些条目出现在Fiddler中。我还没有调查更新1的任何新调试功能,但如果对我有益,我会继续使用它们。干杯。 - Fishcake
2
我必须同意@Fishcake的观点,这些调试器调用确实令人不安,需要过滤掉调试器调用才能看到自己的httpclient调用是一种痛苦。话虽如此,过滤是个好主意。我之前不知道这些是什么。 - hal9000

18
自从这变成了让Fiddler忽略请求的方法,我发现最简单的方法是进入“过滤器”选项卡,请求头部分,勾选“如果 URL 包含”,并输入“/vshub/”。

使用过滤器隐藏

7
我知道这不是答案,但它可能会帮助其他人(就像我一样)。
在KyleUp给出的答案上进行扩展。将此添加到"OnBeforeRequest"方法中会更加通用,并阻止所有localhost /vshub/调试消息填充Fiddler视图。
if(oSession.oRequest.headers["host"].StartsWith("localhost") 
   && oSession.PathAndQuery.StartsWith("/vshub/")) {
    oSession["ui-hide"] = "true";
}

3

这是一个更简单的方法来隐藏vshub的本地主机流量。

进入 工具 > Fiddler选项 > 连接 选项卡,并将 http://localhost:49155 添加到绕过列表中。这将跳过所有发送到该网址的流量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接