我想知道如何获取Azure应用服务插槽已加载到其中的“插槽实例”的唯一标识符。
请注意,我不是是指广告位的名称。
例如:
然后我从Azure门户执行插槽交换操作:
app.azurewebsites.net
的HTTP请求,突然开始接收对app-staging.azurewebsites.net
的请求。app-staging.azurewebsites.net
的HTTP请求,并突然开始接收针对app.azurewebsites.net
的请求。为了调查我遇到的一些问题,我在D:\home\SlotName.txt
创建了一个文本文件。在“应用程序”插槽中输入“ SlotA”,在“应用程序暂存”插槽中输入“ SlotB”。
SlotName.txt
与应用程序实例一起移动,并允许我的应用程序检测它所在的文件系统或“容器”实例-并且在执行插槽交换时不会改变。SlotName.txt
文件看起来像是骇客-但我的应用程序实例的环境变量中看不到任何可揭示相同信息的信息。
这是Production和Staging插槽中的两个Kudu Environment页面-请注意,这些值是相同的(例如Machine name
),特定于插槽的值,或者是引用已部署的应用程序代码,而没有一个引用了它们所在的文件系统/容器实例:
是否有任何方法可以在不使用我的SlotName.txt
技巧的情况下获取此信息?
答案 0 :(得分:1)
答案隐藏在我的鼻子底下-以及不同的术语。
我所说的“插槽实例名称”实际上称为“部署ID”(我知道这是一个重载术语,因为它也在Azure(现在是旧版)“ Cloud Services” PaaS的上下文中使用)。
此信息在Kudu环境页面中可见,并且也暴露为环境变量:WEBSITE_DEPLOYMENT_ID
。
WEBSITE_DEPLOYMENT_ID
的格式为{SiteName}[__{Random}]
,第一个部署空间的前缀为__{Random}
。
如果仔细查看我发布的屏幕截图,您会注意到左侧屏幕截图的名称为Site1__e928
,而右侧屏幕截图的名称为“第一个”所以它的名字叫Site1
。
不幸的是,此信息未由Microsoft公开记录-至少在Google可以看到的范围内{searching for the term right now yields zero useful relevant results):
谜底解决了!
答案 1 :(得分:0)