【问题标题】:IIS 8 Publish - eliminate hang time when application gets updatedIIS 8 Publish - 消除应用程序更新时的挂起时间
【发布时间】:2014-03-18 14:54:39
【问题描述】:

在将更改发布到单服务器 IIS 8 ASP.NET MVC 应用程序时,限制(或消除)挂起时间的最佳做法是什么?

现在,我们正在通过 MSBuild.exe 通过 TeamCity 部署我们的更改。部署应用程序后,它会在启动时挂起不到一分钟(构建 NHibernate 代理程序集、更改 db 架构、构建 ioc 容器等)。

我们有没有办法设置“旧”进程继续处理请求,直到新进程完全准备好(而不仅仅是部署)?

编辑:

我们的启动代码是通过

[assembly: WebActivator.PreApplicationStartMethod(typeof(..), "..")]

属性。

【问题讨论】:

    标签: asp.net-mvc iis teamcity msdeploy


    【解决方案1】:

    您没有指定您使用的 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 设置为在编译时显示替代页面...

    【讨论】:

    • 谢谢。我们正在使用 IIS 8。有没有办法继续使用旧进程,而不是替代页面?显示页面对我没有帮助,我们需要人们继续使用系统...
    • 没有办法做你想做的事,所以我建议你利用应用程序初始化,它会在你部署后立即预热应用程序。您可能还想看看这篇关于优化 asp.net 启动时间的博客文章:blog.lavablast.com/post/2010/12/01/…
    猜你喜欢
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多