重新编译asp.net网站时如何重新启动IIS站点

时间:2010-05-21 16:19:43

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

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

当前流程

  1. 编译项​​目
  2. 等待
  3. 点击APSX页面
  4. IIS开始重新加载
  5. 等待
  6. 页面加载
  7. 理想的过程:

    1. 编译项​​目&重新加载IIS
    2. 等待
    3. 点击APSX页面
    4. 页面加载
    5. 我的第一种方式是添加一个请求,只是点击“Post-Build events”中的一个页面。只是想知道最佳做法。这类似于“开始”,它会在构建时立即打开页面。

      更新: 我想要实现这一目标的原因仅仅是为了提高效率。我想将编译时间和重启时间封装到一个批处理中,以便在下面的步骤4中按时保存

      1. VS: ctrl + shift + b
      2. 等待视觉阙“构建成功”。
      3. Broswer: F5
      4. 等待IIS重新加载。 (以及在unanswered questions in SO
      5. 中命中kbd> F5
      6. 测试页

3 个答案:

答案 0 :(得分:3)

将'iisreset / stop'添加到Pre-Build事件中,并在Post-Build事件结束时添加'iisreset / restart'。

正如大卫所说,你应该试着找出潜在的问题。如果您在首次加载网站时遇到性能问题,这是很正常的。初始编译通常需要一些时间才能完成。重置IIS只会花费更长的时间。如果还有其他问题,请在此处发布您的理由,我们可以看看是否可以为您提供帮助。

答案 1 :(得分:2)

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

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

另一个问题:为什么IIS重置?这不会导致DLL在第一页请求之前重新编译。与传统的ASP不同,没有必要重新启动IIS以使DLL更改被允许/生效。

答案 2 :(得分:1)

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