【问题标题】:What happens to requests when dll is updated in production?在生产中更新 dll 时请求会发生什么情况?
【发布时间】:2019-02-01 16:55:17
【问题描述】:

我们目前正在开发一个 asp.net mvc 应用程序来替换我们旧的经典 asp 应用程序。

因为我们过去只是将 .asp 文件上传到生产服务器,所以我们想对 .net 生成的编译后的 dll 做同样的事情。

现在,我想知道,当网络服务器重新加载程序集时,打开对应用程序的请求会发生什么?

【问题讨论】:

  • 查看这个问题的答案:stackoverflow.com/q/226581/3805124 大部分是指 IIS 和 ASP.Net
  • 一般来说,当你优雅地回收 IIS(即它没有崩溃)时,它会在关闭旧的 appPool 之前完成所有收到的请求。见serverfault.com/a/634207
  • 我从 SO 链接中得到的是,我们能够更改 bin 目录中的 dll,而无需关闭应用程序池。在使用新的 dll 之前,卷影副本会为我们排干连接。很有帮助,谢谢。
  • 这有点牵强,我会对其进行测试,但优雅地终止当前请求与允许您在应用程序仍在运行时更改 dll 是不同的

标签: c# .net asp.net-mvc dll continuous-deployment


【解决方案1】:

经典的 asp 是一种脚本语言,不需要编译,因此您可以根据自己的喜好覆盖生产中的文件。

然而,MVC 需要编译,创建和使用临时文件。像这样 您不能简单地覆盖正在运行的系统中的 dll,这些 dll 将被使用。

您将需要停止您的应用程序,这将终止所有连接并且不再接受任何请求,进行上传,重新编译您的应用程序,然后重新启动它。

所有这些通常都可以通过 CI/CD 管道快速完成。您可能希望围绕此创建一个流程,可能会使网站暂时不可用,但这取决于您正在运行的系统类型以及它的重要性。如果您需要 24/7 全天候不间断运行,那么您将需要一些创意

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 2013-06-09
    相关资源
    最近更新 更多