【问题标题】:Optimizing IIS7 for .NET development and debugging为 .NET 开发和调试优化 IIS7
【发布时间】:2013-08-07 19:56:39
【问题描述】:

似乎我在 .NET 中花费了将近一半的时间在等待 IIS 启动而不是实际开发。

这很简单:每当我有机会访问代码隐藏文件并刷新时,IIS 需要 15 秒到 1 多分钟的时间来回收。

有什么办法可以改善吗?真让人抓狂。

我正在从事网站项目(不是 Web 应用程序项目),运行 Windows 7 并在 .NET 4 框架中工作。我的机器才几个月大,有一个 SSD,所以我认为硬件不应该是瓶颈。

此外,我什至大部分时间都没有真正调试应用程序,尽管运行速度更慢。

【问题讨论】:

  • 这很正常,避免在每次更改 C# 文件后测试页面。

标签: c# .net windows iis iis-7


【解决方案1】:

编辑

无论您使用哪种类型的 IIS,加快速度的最佳方法之一是创建一个 RAM 驱动器并将您的 TEMP 和 尤其是 ASP.NET Temporary Files 文件夹指向它。 ASP.NET 临时文件包含为您的页面编译的二进制文件。 ASP.NET 在启动时会检查此文件夹,并且只重新编译有更改的页面。将此文件夹放在 RAM 驱动器上会使启动时间增加几个数量级。该技术在多篇文章中进行了描述,例如。在“Slash your ASP.NET compile/load time without any hard work”中

另外,您还可以减少 SSD 的磨损。

原创

对于网络应用程序

听起来您已将项目设置为使用 Visual Studio 开发服务器或 IIS Express,而不是计算机本地的 IIS 服务。发生这种情况时,Dev Server 从零开始会出现明显延迟。

这是新 Web 项目的默认设置。开发服务器很有用,因为它以随机可用端口上的根虚拟目录启动您的项目。缺点是需要很长时间才能启动。

您可以通过将项目更改为使用本地 IIS 并在特定虚拟目录下启动来显着加快速度。在这种情况下,服务器已经在运行,唯一需要做的就是回收应用程序池。应用程序池回收实际上非常快,除非您在 aspx 页面中嵌入了 很多 代码,否则您可能不会注意到任何延迟,这需要在每次回收时重新编译。

要更改用于调试的服务器类型,请转到您的 Web 应用程序的 Properties > Web,然后在 Servers 部分中,将选择从 Development Server 更改为 Local IIS。您必须为您的应用程序创建一个虚拟目录,但这可以通过在 Project Url 文本框中输入所需的 URL 并按“创建虚拟目录”按钮轻松完成。

对于网站项目

IIS Express/Visual Studio Dev Server 与本地 IIS 实例的影响同样适用于网站项目。基于文件的网站默认使用开发服务器。更改为本地 IIS 服务的过程是不同的。谢天谢地,在How to: Specify the Web Server for Web Projects in Visual Studio有详细描述

【讨论】:

  • 如果他指的是 IIS Express,我怀疑他会明确指定 IIS7。此外,鉴于他使用的是网站项目,是的,每次访问页面时它都会编译所有内容。此外,每次重建时,IIS Express 都不会关闭并“从 0 开始”。 IIS Express 与 IIS 的代码相同,只是它在用户模式下运行(而不是作为服务)。最大的优点是它不需要以管理员身份运行 Visual Studio 来调试它。
  • 基于文件的网站使用 IIS Express。对于 IIS 托管的项目来说,15 秒是一个巨大的延迟
  • 是的,很遗憾我已经在使用 IIS7 而不是 IIS express。我熟悉后者以及由于我之前使用它进行调试而导致的额外延迟。感谢您提供有关创建 RAM 驱动器的信息,但我以前从未听说过。
【解决方案2】:

您必须了解网站项目的工作原理。每次更改后,每个文件都会在后台编译成自己的 DLL。没有办法改变这一点。

现在,需要多长时间取决于您的代码。您可以采取一些措施来提高速度。您可以清除 \Windows\Microsoft.NET 中的 ASP.NET 临时文件夹,并且可以删除任何未使用的引用或未使用的任何 using 语句。这将减少编译时间。

无论如何,网站项目确实没有得到很好的支持,并且有很多缺点。唯一真正的优势是即时编译,正如您所发现的那样,这并不是什么大好处。

您可能想阅读这篇文章:

http://msdn.microsoft.com/en-us/library/dd547590.aspx

对于新的开发,我们建议您选择 Web 应用程序项目。本主题解释了网站项目具有一些优势,但许多选择网站项目的开发人员最终发现劣势超过了任何感知到的优势。此外,随着新的 ASP.NET 功能的开发,它们并不总是可用于网站项目。例如,Visual Studio 2012 之后的下一个 Visual Studio 版本将具有用于创建 Web 项目的新工具,而这种新工具将仅适用于 Web 应用程序项目。

【讨论】:

  • ASP.Net 临时文件夹保存预编译文件。即使对于未更改的文件,清理它也会通过强制重新编译来增加延迟
  • @PanagiotisKanavos - 我并不是说每次都清理它。当这个文件夹里面有很多垃圾时,扫描程序集需要更长的时间,所以 IIS 不知道它是否需要重新编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多