在将更改发布到单服务器IIS 8 ASP.NET MVC应用程序时,限制(或最好地消除)挂起时间的最佳做法是什么?
现在,我们正在通过TeamCity通过MSBuild.exe部署我们的更改。一旦部署了应用程序,它就会在不到一分钟的时间内完成启动工作(构建NHibernate代理程序集,更改数据库模式,构建ioc容器等)。
有没有办法让我们设置“旧”进程一直处理请求,直到新的进程完全就绪(而不仅仅是部署)?
编辑:
我们的启动代码是通过
启动的[assembly: WebActivator.PreApplicationStartMethod(typeof(..), "..")]
属性。
答案 0 :(得分:2)
您没有指定正在使用的IIS版本,但如果您使用的是8.0版,则可能需要查看“应用程序初始化”功能:http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization
您需要将应用程序池启动模式设置为AlwaysRunning,然后将preloadEnabled设置为true。将preloadEnabled设置为true会告诉IIS 8.0在关联的应用程序池启动时向您的应用程序发送“假”请求,而这不会消除启动编译,这将意味着您的应用程序比以前更早可用。如果您不希望用户挂起,您还可以在编译过程中将IIS设置为显示备用页面...