【问题标题】:ASP.NET MVC Debugging Very Slow - SQL Server Express Connection Issue?ASP.NET MVC 调试非常慢 - SQL Server Express 连接问题?
【发布时间】:2010-10-30 17:51:05
【问题描述】:

我正在用 ASP.NET MVC 开发一个应用程序,使用 SQL Server Express 作为后端,使用 Cassini 作为开发 Web 服务器(Visual Studio 2008 附带的服务器)。

应用程序的性能非常快(几乎是瞬时的页面切换)。然而,启动调试器非常缓慢。从我按 F5 到出现 ASP.NET 欢迎页面大约需要 30 秒。

我注意到在加载 SQL Server Management Studio Express 时出现了类似的延迟,当我第一次在我的数据库中打开一个表进行查看时也出现了另一个延迟。在我打开我的第一张桌子后,一切都很顺利。

鉴于 SQL Server Management Studio Express 的行为,我怀疑问题出在与 SQL Server Express 的初始连接上。这真的是问题所在吗?如果是,我该如何解决?

【问题讨论】:

    标签: c# sql-server asp.net-mvc


    【解决方案1】:

    我会检查数据库的 auto_close 属性。

    sp_dboption 'MyDatabaseName', 'autoclose'
    

    我认为 express 的默认设置可能是将自动关闭设置为打开。当设置为 TRUE 时,当数据库中没有用户时,服务器将关闭数据库并从中释放所有资源。将 autoclose 设置为 FALSE 将告诉服务器挂在数据库上,以便无论用户是否在数据库中,它都处于就绪状态。

    请参阅here 了解更多信息。

    【讨论】:

      【解决方案2】:

      如果只是调试时比较慢,那么有几个瓶颈需要考虑:

      1. 调试时应用程序启动速度较慢,因为 JITer 在重新构建程序集时必须执行预编译。
      2. 如果您每次都在编译和调试,可能是您的编译速度较慢,而不是您的应用程序性能。按 F5 后,浏览器 需要多长时间才会出现?如果您的解决方案中有多个项目,构建它们将需要时间。尝试设置排除类项目的构建配置(确保在必要时手动重新构建它们)
      3. 我在使用 Cassini 时没有遇到任何问题,但您可以尝试 IIS 来开个玩笑。

      只是一些想法,HTH。

      【讨论】:

      • Dave,浏览器在按下 F5 后立即出现,并在第一页决定出现时处于空白状态 30 秒。我通常在按 F5 之前构建。我可以尝试 IIS7,但我需要先安装另一台装有 Windows Server 2008 的机器。解决方案非常小,除了测试项目外不包含任何其他类项目。
      【解决方案3】:

      我终于通过在命令提示符窗口中使用 Netshell 重建我的 TCP/IP 堆栈解决了这个问题。显然我遇到了 TCP/IP 超时。

      netsh int ip reset c:resetlog.txt 
      

      http://support.microsoft.com/kb/299357

      【讨论】:

      • 该链接提供了一个“Microsoft Fix it”工具,正如它所说,它会自动修复问题,但需要重新启动。
      【解决方案4】:

      在我的情况下,我遇到了抛出和捕获的异常,这些异常在“调试”>“输出”窗口中可见,这在调试我的应用程序时大大减慢了它的速度。

      我最终启用了此处概述的异常中断,然后只是修复了代码,因此不会引发太多异常

      Why is ASP.NET throwing so many exceptions?

      【讨论】:

        猜你喜欢
        • 2015-11-19
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        • 1970-01-01
        • 2016-08-18
        相关资源
        最近更新 更多