Windows蔚蓝。获取唯一的应用程序实例 ID

Windows Azure. Get unique application instance ID

我们在 Windows Azure 中使用 "Websites"。我需要获得唯一的应用程序实例。我知道 "RoleEnvironment.CurrentRoleInstance.Id" 但据我所知它仅适用于网络角色。所以我正在考虑以下方法来为每个实例获取唯一的应用程序 ID。我很感兴趣是否可以使用。还是我遗漏了什么?

  1. 应用程序启动后,我会生成一些唯一的名称(在 "Application_Start" 方法中)。例如,Guid.NewGuid().
  2. 完成后,我将这个唯一值存储在某个静态变量中。
  3. 当启动第二个实例时,重复步骤 1 和 2 并生成其他一些新的唯一名称

这样我每个实例都有唯一的名称。当然,一旦站点(或某个实例)重新启动,我将获得新的绝对唯一值。但对我们来说没问题。

如果您在此解决方案中发现任何陷阱,请告诉我

这应该可行,但当然 GUID 只会在 w3wp 进程的生命周期内存在。因此,每个 w3wp 进程都有唯一的名称,这意味着每个实例都有唯一的名称。

如果您想使用更有针对性的唯一名称,您可以尝试使用 ARR 亲和性 cookie。默认情况下,Azure Web 应用程序使用粘性会话负载均衡器(当 运行 多个实例时)运行。它在 HTTP 响应中注入 ARR affinity cookie,有助于将用户重定向到它第一次建立会话的同一实例。

您也可以使用环境变量来唯一标识实例,即Environment.ComputerName

您可以改用 COMPUTERNAME 或 WEBSITE_INSTANCE_ID 环境变量。

事实上,您可以在 https://<yoursite>.scm.azurewebsites.net/Env

浏览完整的环境变量列表