交换后,应用服务上的WEBSITE_HOSTNAME值过旧

时间:2019-06-21 14:25:59

标签: azure azure-web-sites

我有一个带有生产和暂存槽的Azure应用服务。我正在使用虚拟目录运行几个网站。我有任务设置可以在每个网站预热后通知我。我正在使用WEBSITE_HOSTNAME环境变量来确定在何处生成电子邮件并将Prod / Staging附加到主题。我的主体中也有汇编版本,以查看正在预热什么代码。

string websiteHostName = Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME");

当我将“版本2”部署到分期时,我收到的电子邮件中正确附加了“ / staging”和正文中的“版本2”。当我交换插槽时,我收到的电子邮件中带有'/ prod'和'Version 1'。

当我在KUDU中检查生产插槽时,WEBSITE_HOSTNAME为(站点名称)-staging.azurewebsites.net,而暂存插槽的值为(站点名称).azurewebsites.net。如果我手动重新启动暂存插槽,则WEBSITE_HOSTNAME值将更新为-staging.azurewebsites.net,并且我从预热过程中收到的电子邮件中包含“ / staging”和“ Version 1”,这是我期望的预热过程交换到暂存时。

我已经尝试使用部署插槽,但是交换未正确运行,因为在应用完全预热之前,交换被标记为已完成,这给用户造成了停机。

将生产插槽转换为暂存后,重新启动生产插槽的原因是什么?发生这种情况时,是否应该更新WEBSITE_HOSTNAME值?我很困惑,因为手动重启会更新该值。

是否有一种方法可以防止应用程序切换到暂存状态后重新启动?

或者,有没有办法获取HTTP_HOST变量值?

1 个答案:

答案 0 :(得分:0)

交换后,不正确的WEBSITE_HOSTNAME是一个已知问题,我们正在努力解决。解决方法是重新启动,但这并不完美。应用程序的另一种解决方法是忽略该环境变量,并依赖实际的传入标头HTTP_HOST。