为什么ASP.NET / Visual Studio Web开发服务器这么慢?

时间:2010-11-24 06:40:26

标签: c# asp.net asp.net-mvc visual-studio debugging

Compiling - XKCDxkcd

我知道现在的编译比以前快得多。然而,对我来说,使用Visual Studio Web开发服务器进行编译,尤其是运行/调试ASP.NET项目的速度非常慢

自去年夏天开始以来,我一直在努力研究ASP.NET MVC项目。当然,调试它们的最佳方法是使用Visual Studio附带的Web服务器。这样做时,加载时间非常慢。 Chrome开发工具通常会报告加载我的某个网页的 3 分钟等待时间,然后加载时间很短。

我看过these two个问题,但他们没有帮助。虽然我在Chrome中进行了大部分调试工作,但在IE中也是如此。

以前有其他人有这个问题吗?如果是这样,任何提示?

另外,我怀疑问题在于机器的速度。这台计算机运行的Windows 7和Visual Studio 2010非常快,所以我不明白为什么ASP.NET调试应该这么慢。


更新:在下面的回答中,Jon Skeet建议尝试确定问题是由环境还是代码本身引起的。我创建了一个全新的MVC项目并运行它。第一次测试似乎要快得多。然而,经过几次测试之后,可以肯定地说第一次测试是异常的 - 通常,它需要我的大项目(2 - 3分钟)。因此,这是环境问题。在此先感谢您的帮助!


更新#2:我更新了这个问题已经有一段时间了。以下是自上次更新以来我收集的一些细节:

  • 我的两台开发机器都出现了这种延迟,无论是运行Windows 7还是Visual Studio 2010
  • 我的所有MVC2和MVC3项目都发生了这种延迟(但我还没有尝试过普通的ASP.NET)。
  • 普通/ vanilla MVC项目与具有大代码库的MVC项目相同的延迟
  • 禁用IntelliTrace无效
  • 禁用IPv6无效

我还没有找到解决这个问题的方法,所以我一直在等待很长时间。有谁知道如何解决这个问题?

7 个答案:

答案 0 :(得分:8)

没有理由为什么要花3分钟开始调试,除非你有一些非常奇怪的事情发生。

我建议你启动调试器,尝试导航到一个页面,然后在加载时闯入调试器。看看你在哪里浪费时间。也许你正在启动失败的电话,但需要几分钟才能完成。

我从来没有经历过你所描述的任何事情,这表明它在您的环境代码中 - 如果它是一台通常很快的计算机,那表明它在代码中的某处

如果您创建一个全新的MVC项目并对其进行调试, 会花费很长时间吗?

您可能还希望在开始调试时运行Wireshark - 查看应用中的某些内容是否在尝试获取某些描述的网络资源而不会意识到这一点。

答案 1 :(得分:4)

  

这是由于Firefox中的IPv6 DNS问题,可以通过在network.dns.disableIPv6

中将about:config设置为true来解决

Slow DNS response - Firefox on localhost and Visual Studio or Cassini

答案 2 :(得分:3)

这实际上是MVC的已知性能问题,原因是在启动时内部抛出了大量异常。如果你打开IntelliTrace,这将破坏它。尝试禁用IntelliTrace,看看是否能改善它。

来源:http://connect.microsoft.com/VisualStudio/feedback/details/535799/debugging-mvc-is-very-very-slow

答案 3 :(得分:3)

答案 4 :(得分:1)

我最近遇到了同样的问题,在Win7,VS2010下工作,并开发了一个包含10多个项目的Silverlight解决方案。启动IE需要大约3分钟,关闭IE后等待3分钟才能恢复VS.我通过尝试不同的方式克服了这个问题。但唯一有价值的方法是:

  1. 卸载所有不用于调试的项目
  2. 开始调试解决方案(它正常工作)
  3. 重新加载其他项目
  4. VS在这里工作正常。 (VS工作正常)
  5. 似乎问题只与我身边的VS环境有关。它与ASP.NET Development Server或IIS无关。

答案 5 :(得分:0)

我遇到了同样的问题。它最终成为我的本地机器上安装ColdFusion的问题(这对我来说是痛苦的)。 ColdFusion将Handler Mappings命名为AboMapperCustom- * ,这会导致延迟。我卸载了ColdFusion因为我不再需要它(感谢上帝)。另一种解决方案是通过web.config删除每个AboMapperCustom条目。例如:

<handlers>
    <remove name="AboMapperCustom-15397" />
    <remove name="AboMapperCustom-20358" />
    <remove name="AboMapperCustom-47286" />
</handlers>

确保AboMapperCustom后面的5位数字符合本地IIS处理程序映射中的5位数字。

HTH

答案 6 :(得分:0)

在Visual Studio 2012 + Win10 x64上,我注意到了,如果你

  • 转到任务栏,找到那里的asp.net开发服务器,
  • 右键单击它并执行“显示详细信息”
  • 关闭方框(不是'停止',只是通过'x'关闭)

然后服务器几乎立即加载