.NET Core部署到Azure App Service后如何获取运行实例的名称或ID
.NET Core部署到Azure App Service获取运行实例标识的实现方案
核心原理
Azure App Service在运行时会自动为每个实例注入预设的环境变量,你需要的实例标识可以直接从环境变量中读取,无需引入额外依赖。
可用环境变量说明
WEBSITE_ROLE_INSTANCE_ID:返回格式为{应用名称}_{实例序号},也就是你需要的MyApp_0、MyApp_1这类标识,完全匹配需求WEBSITE_INSTANCE_ID:返回当前实例的16位唯一哈希ID,适合需要全局唯一标识的场景使用- 以上两个变量在Windows、Linux宿主的Azure App Service以及部署槽环境中均通用。
实现方式
方式1:直接读取环境变量
// 读取带应用名和序号的实例标识 var instanceRoleId = Environment.GetEnvironmentVariable("WEBSITE_ROLE_INSTANCE_ID") ?? "Local_Dev"; // 读取唯一哈希ID var instanceUniqueId = Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID") ?? "Local_Dev_Id";
方式2:通过IConfiguration读取(推荐)
.NET Core默认会把环境变量加入配置源,你可以直接通过注入的IConfiguration读取,更符合.NET Core的配置规范:
public class InstanceService { public readonly string CurrentInstanceId; public InstanceService(IConfiguration config) { CurrentInstanceId = config["WEBSITE_ROLE_INSTANCE_ID"] ?? "Local_Dev"; } }
注意:上述环境变量仅在部署到Azure App Service后存在,本地开发环境默认没有该值,你可以在项目的launchSettings.json中手动添加对应环境变量模拟线上行为。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

