添加到Asp.net项目的构建/编译脚本中以启动IIS以在DLL重建时重新启动网站而不是第一次请求到站点的最佳方法是什么。
当前流程
理想的过程:
我的第一种方式是添加一个请求,只是点击“Post-Build events”中的一个页面。只是想知道最佳做法。这类似于“开始”,它会在构建时立即打开页面。
更新: 我想要实现这一目标的原因仅仅是为了提高效率。我想将编译时间和重启时间封装到一个批处理中,以便在下面的步骤4中按时保存
答案 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来解决此问题,从而可以预编译标记页面。这样,部署后的初始加载时间不应与任何其他加载时间有很大差异。