【问题标题】:How to restart the IIS Site when re-compiling an asp.net website重新编译asp.net网站时如何重启IIS站点
【发布时间】:2011-02-22 10:43:20
【问题描述】:

添加到 Asp.net 项目的构建/编译脚本中以启动 IIS 以在 DLL 重建时重新启动网站而不是对网站的第一次请求的最佳方法是什么。

当前进程

  1. 编译项目
  2. 等等
  3. 点击 APSX 页面
  4. IIS 开始重新加载
  5. 等等
  6. 页面加载

理想过程:

  1. 编译项目并重新加载 IIS
  2. 等等
  3. 点击 APSX 页面
  4. 页面加载

我想到的第一种方法是添加一个请求以在“构建后事件”中点击其中一个页面。只是想知道最佳实践。这类似于在构建时立即打开页面的“开始”。

更新: 我想做到这一点的原因只是为了提高效率。我会将编译时间和重启时间封装到一批中,以节省下面第 4 步的时间

  1. VS:ctrl+shift+b
  2. 等待视觉查询“构建成功”。
  3. 浏览器:F5
  4. 等待 IIS 重新加载。 (以及unanswered questions in SO 中的 Hit kbd>F5)
  5. 测试页面

【问题讨论】:

  • 我不确定这会如何节省您的时间。您要么必须等待 IIS 响应您的第一页请求,要么在 IDE 执行第一页请求时等待它。无论哪种方式,唯一要编译的代码将是所请求页面所需的代码。此外,您还引入了开发环境和生产环境之间的差异(无论多么微不足道),这些差异永远不会结束。
  • @David Lively - 这是用于 IIS 运行开发版本的开发环境。

标签: asp.net visual-studio iis build-process


【解决方案1】:

在 Pre-Build 事件中添加“iisreset /stop”,在 Post-Build 事件结束时添加“iisreset /restart”。

正如大卫所说,您应该尝试找出这里的根本问题。如果您在首次加载网站时遇到性能问题,这是很正常的。初始编译通常需要一些时间。重置 IIS 只会使其花费更长的时间。如果还有其他问题,请在此处发布您这样做的原因,我们可以看看是否可以帮助您。

【讨论】:

  • 我不需要完全重启所有网站的 IIS,只需要重新编译一个网站。
  • 知道了。您的问题最初措辞不是很好,因此您不想要 iisreset 并不是很清楚。您还没有解释这里的根本问题。
【解决方案2】:

一种天真的方法是编写一个 shell vb 脚本或 PowerShell 脚本来使用 XmlHttpRequest 从站点请求一个页面,并将其包含为构建后任务。

您觉得有必要这样做有什么特别的原因吗?如果您在第一次 JIT 时遇到性能问题,那么您可能需要考虑将您的应用程序分解为较小的项目/DLL(假设大小是问题所在),或者开始查看您的应用程序启动时出现的瓶颈。

另一个问题:为什么要重置 IIS?在第一页请求之前,这不会导致重新编译 DLL。与经典 ASP 不同,无需重新启动 IIS 即可允许/生效 DLL 更改。

【讨论】:

  • 最终使用 Powershell 和 Net.WebClient。将脚本添加到构建后事件
【解决方案3】:

您希望从进程中删除的“等待”很可能是正在编译的 aspx 标记页面。默认情况下,当您在 VS 中构建时,它会编译您的所有代码,但不会编译您的标记 aspx 页面。您可以通过在解决方案中添加Web Deployment Project 来解决此问题,这允许您预编译标记页面。这样,部署后的初始加载时间不应与任何其他加载时间有太大差异。

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 2017-11-28
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    相关资源
    最近更新 更多