防止在交换期间重新启动暂存站点

Preventing staging site restart during a swap

根据我的理解,登台站点需要重启的唯一原因是是否存在应用程序设置或配置为槽设置的连接字符串。

虽然这似乎并不总是正确的。无论如何,我们的一个应用程序将重新启动。我已经使用 Powershell cmdlet 来确保门户中没有插槽设置 "hidden"(因为显然这是一回事)。

还有哪些其他因素可以决定临时站点是否会在交换期间重新启动?

(我发布了 this on the kudu GitHub repository,但没有收到回复)

编辑:

回应拜伦的回答:

我已经完成了一些非常彻底的测试(请参阅 my testing repo)并且我能够执行插槽交换(有和没有预览)无需重新启动生产或暂存插槽。这显然是没有在 Web 应用程序上配置插槽设置。

这是否意味着不能保证重启?我在这里提出的问题是,如果没有发生重启,IIS 的应用程序初始化模块是否仍然确保应用程序确实已经热身(因为这些事情可能需要几分钟)?

你说得对,如果有应用设置或连接字符串标记为插槽设置,临时插槽将始终在交换之前重新启动。还有一些其他情况会导致重新启动,例如,当按此处 http://ruslany.net/2014/03/azure-web-sites-continuous-deployment-with-staged-publishing/ 所述启用持续部署时。重新启动的另一个原因是在生产或临时插槽上启用了站点身份验证。

如果没有重启,appinit模块将不会在交换期间重新执行,因为它只在工作进程初始化时运行。如果您想确保始终重启,那么您可以创建一些虚拟应用程序设置并将其标记为插槽设置。

据我了解

具有不同值的非插槽设置应该需要重新启动源站点 (每次交换时交换具有不同值的非插槽设置)

插槽设置应仅在预览模式下要求重新启动源站点。 (没有预览模式,每个插槽都保留其插槽设置)