代码之家  ›  专栏  ›  技术社区  ›  Glennular

重新编译ASP.NET网站时如何重新启动IIS网站

  •  2
  • Glennular  · 技术社区  · 16 年前

    在ASP.NET项目的生成/编译脚本中添加什么是启动IIS以在dll重新生成时重新启动网站的最佳方法,而不是向网站发出第一个请求。

    当前进程

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

    理想工艺:

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

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

    更新: 我之所以想做到这一点是为了提高效率。我将编译时间和重新启动时间封装到一个批处理中,以节省下面步骤4的时间。

    1. VS: CTRL + 转移 + 乙
    2. 等待Visual Que“生成成功”。
    3. Broswer: F5 .
    4. 等待IIS重新加载。(以及在 unanswered questions in SO )
    5. 测试页面
    3 回复  |  直到 16 年前
        1
  •  2
  •   3Dave    16 年前

    一种幼稚的方法是编写一个shell vb脚本或powershell脚本,使用xmlhttprequest从站点请求一个页面,并将其作为后期生成任务包括在内。

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

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

        2
  •  3
  •   Daniel Dyson    16 年前

    在预生成事件中添加iisreset/stop,在后期生成事件结束时添加iisreset/restart。

    正如大卫提到的,你应该试着找出这里的根本问题。如果在首次加载网站时遇到性能问题,这是很正常的。初始编译通常需要一些时间。重置IIS只会使时间变长。如果还有其他问题,请在这里张贴您的理由,我们可以看看我们是否能帮助您。

        3
  •  1
  •   Coding Flow    16 年前

    您希望从进程中删除的“等待”很可能是正在编译的ASPX标记页。默认情况下,当您内置vs时,它将编译所有代码,但不会编译标记ASPX页。您可以通过添加 Web Deployment Project 到您的解决方案,它允许您预编译标记页。这样,部署后的初始加载时间与任何其他加载时间都不会有太大的不同。

    推荐文章