我有一个带有生产槽和暂存槽的 Azure 应用服务。我正在使用虚拟目录运行几个网站。我设置了任务,以便在每个网站预热时通知我。我使用 WEBSITE_HOSTNAME 环境变量来确定电子邮件的生成位置并将 Prod/Staging 附加到主题。我还在正文中提供了汇编版本,以查看正在预热哪些代码。
string websiteHostName = Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME");
当我将“版本 2”部署到暂存时,我收到的电子邮件正确附加了“/staging”,正文中包含“版本 2”。当我交换插槽时,我收到正文中带有“/prod”和“版本 1”的电子邮件。
当我检查生产槽的 KUDU 时,WEBSITE_HOSTNAME 是(站点名称)-staging.azurewebsites.net,暂存槽的值是(站点名称).azurewebsites.net。如果我手动重新启动暂存槽,则 WEBSITE_HOSTNAME 值将更新为 -staging.azurewebsites.net,并且我从预热过程中收到的电子邮件具有“/staging”和“版本 1”,这是我对预热过程的期望当它切换到暂存时。
我已经尝试使用部署槽,但交换无法正常工作,因为在应用程序完全预热之前交换被标记为已完成,这导致用户停机。
生产槽切换到暂存槽后重新启动的原因是什么?发生这种情况时是否应该更新 WEBSITE_HOSTNAME 值?我很困惑,因为手动重新启动会更新该值。
有没有办法阻止应用程序在切换到暂存状态时重新启动?
或者,有没有办法获取 HTTP_HOST 变量值?
最佳答案
交换后 WEBSITE_HOSTNAME 不正确是一个已知问题,我们正在努力解决它。解决方法是重新启动,但这并不完美。另一种解决方法是应用程序忽略该环境变量并依赖实际传入 header HTTP_HOST。
关于azure - 交换后应用服务上的 WEBSITE_HOSTNAME 值已过时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56705331/