【问题标题】:Stale WEBSITE_HOSTNAME value on app service after swap交换后应用服务上的旧 WEBSITE_HOSTNAME 值
【发布时间】:2019-06-21 14:25:59
【问题描述】:

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

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

当我将“版本 2”部署到暂存时,我会收到正确附加了“/暂存”且正文中包含“版本 2”的电子邮件。当我交换插槽时,我会收到正文中带有“/prod”和“版本 1”的电子邮件。

当我检查 KUDU 的生产槽时,WEBSITE_HOSTNAME 是(站点名称)-staging.azurewebsites.net,暂存槽的值是(站点名称).azurewebsites.net。如果我手动重新启动暂存槽,则 WEBSITE_HOSTNAME 值将更新为 -staging.azurewebsites.net 并且我从热身过程收到的电子邮件具有“/staging”和“版本 1”,这是我对热身过程的期望当它被交换到暂存时。

我已经尝试使用部署槽,但交换无法正常工作,因为在应用完全预热之前交换被标记为已完成,这导致用户停机。

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

有没有办法防止应用在切换到暂存时重新启动?

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

【问题讨论】:

    标签: azure azure-web-app-service


    【解决方案1】:

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

    【讨论】:

    • 我尝试使用类似的设置来获取 HTTP_HOST,因为我已经在使用来获取 WEBSITE_HOSTNAME 值。当我尝试字符串 httpHost = Environment.GetEnvironmentVariable("HTTP_HOST"); 时,返回的值为 NULL。这应该工作还是我需要不同的设置来获取 HTTP_HOST 值?
    • 这个错误仍未修复,仅供参考
    • 是的,我编写了一个 Azure SDK WebJob,它将使用以此变量命名的文件夹记录到 Azure Blob 存储。我很困惑,直到我意识到这是一个错误。不幸的是,由于我的 WebJob 没有响应请求,而是在连续计时器上运行,因此没有要为 HTTP_HOST 挖掘的标头
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2022-01-19
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多