是否在安全生产环境中发布到 IIS

Does publish to IIS in production safe

我有一个应用程序托管在带有负载均衡器的 AWS 上的多台服务器上。
我使用 Microsoft Web Deploy 将更新推送到服务器。

假设我想将更新推送到所有服务器。
我应该在部署之前从负载均衡器中删除服务器吗?应用程序池当前正在处理的请求会发生什么情况,到达服务器的新请求会发生什么情况?

这取决于你所说的 "safe" 是什么意思。从您当前部署的状态来看,不会有任何影响。从数据完整性的角度来看,此过程可能不安全。当您的项目的 .dll 在服务器中被替换时,应用程序池几乎立即回收。

这样做的结果是所有当前进程都被终止而不受惩罚。使用系统的用户越多,未定义行为的结果就越普遍。被删除的主要内容是数据库连接,通常用户会在发布过程中,一切看起来都很好,但只有部分或 none 他们的交易会完成。

Ajax 请求有时也会因此而无限期地旋转。基本上它只是用核武器摧毁当前 运行ning 的所有内容,并且没有宽限期或宽恕。

为了解决这个问题,大型服务通常会发出警告。

The server will be restarting in 15 minutes.

为了促进这一点,如果有一个开关,您可以在应用程序本身的某处进行更改,这基本上是 returns 一个页面,指示服务器通过某种全局级别的操作处于离线状态第一次遇到请求时。 15 分钟后打开它,并让它 运行 持续很长时间,因为它可能需要为一个很长的请求提供服务。这应该是某个地方的默认值(我知道大多数地方只要 2 分钟,有时短到 30 秒)。

稍等片刻以确保所有先前发送的请求在您切换之前都已得到处理后,推送您的更新。如果开关是默认关闭的静态值,只需按下新版本就会重置静态值,一旦新 .dll 编译完成并重新启动应用程序池,一切都会恢复。