如何使用 C# 代码检索 运行 Azure WebJob 的 InstanceId 和进程 Id

How to retrieve InstanceId & Process Id of a running Azure WebJob using C# code

我正在尝试检索下面快照中突出显示的 Azure WebJob.As 的实例 ID 和进程 ID,我想检索 运行 InstanceId。

我还想检索 WebJob 的 ProcessId。 使用 C# 代码是否可以检索这两个值?

提前感谢您的帮助。

环境变量,"WEBSITE_INSTANCE_ID" 包含实例 ID。在您的屏幕截图中,字符串 "e582f3" 是完整 ID 的缩写。

[09/08/2017 21:00:53 > be313b: INFO] [21:00:45 INF] Instance: RD00155DF9356E (be313b15729ccddadf6ea48a522d9456e23cc0abf82e5180e3997118fae84fe3)

这是我写的日志条目,打印出环境变量 "COMPUTERNAME" 和 "WEBSITE_INSTANCE_ID"。可以看到 be313b 确实是完整id的前六位 be313b15729ccddadf6ea48a522d9456e23cc0abf82e5180e3997118fae84fe3.

如果您想查看所有可用的变量,请转到您的 Kudu 控制台并单击 "Environment":https://your-appservice.scm.azurewebsites.net/Env.cshtml

对于进程 ID,我想您可以像在其他任何地方一样调用 Process.GetCurrentProcess().Id

希望对您有所帮助!

每个网络应用的实例都有自己的实例 ID。它将在其 Web 应用程序服务器中保存为环境变量。

要获取当前的 WebJobs 实例 ID,请使用环境变量(WEBSITE_INSTANCE_ID)。

实例 ID 表示站点 运行 所在的虚拟机(如果站点在多个实例上运行,每个实例将有不同的 ID)

您可以参考以下代码了解更多详情:

public static void ProcessQueueMessage([QueueTrigger("queue3")]  string thumbnail, TextWriter log)
        {

            string instanceid = Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID");

            log.Write( "Current instance ID : "  +  instanceid);
        }

有关获取 ProcessId 和 InstanceId 的更多详细信息和示例,请参阅此 blogpost

正如 Kenneth LeFebvre 提到的,您还可以使用 Kudu 控制台的“环境”选项卡来检查实例和进程 ID。