You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查我的ASP.NET Core是否运行在Azure环境中?

多环境(Synology/Azure/本地调试)适配方案

问题分析

你之前用WEBSITE_HOSTNAME.Contains("Azure")判断Azure环境失效,核心原因是Azure App Service的WEBSITE_HOSTNAME环境变量值通常是<应用名>.azurewebsites.net(或自定义域名),不会直接包含"Azure"字符串,导致判断逻辑不成立。

具体实现方案

通过环境变量+特征标识精准区分三个环境,每个环境都有可依赖的独特判断依据:

1. 本地调试环境判断

直接利用.NET开发环境标识,或自定义环境变量标记:

// 方法一:依赖.NET原生开发环境变量
bool isLocalDebug = string.Equals(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"), "Development", StringComparison.OrdinalIgnoreCase);

// 方法二:自定义本地标记(在launchSettings.json中添加LOCAL_DEBUG=true)
bool isLocalDebug = string.Equals(Environment.GetEnvironmentVariable("LOCAL_DEBUG"), "true", StringComparison.OrdinalIgnoreCase);

2. Azure环境判断

改用Azure专属环境变量或默认域名后缀匹配,前者更可靠(即使使用自定义域名也有效):

// 方法一:检查Azure App Service专属环境变量
bool isAzure = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("WEBSITE_SITE_NAME"));

// 方法二:匹配Azure默认域名后缀
bool isAzure = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME")) && 
               Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME").Contains(".azurewebsites.net", StringComparison.OrdinalIgnoreCase);

3. Synology环境判断

在Synology的部署配置中添加自定义环境变量(如Docker容器配置、Web Station站点设置),通过该变量识别:

bool isSynology = string.Equals(Environment.GetEnvironmentVariable("SYNOLOGY_DEPLOY"), "true", StringComparison.OrdinalIgnoreCase);

完整整合示例

string currentEnv = string.Empty;

// 优先级:本地调试 > Azure > Synology
if (string.Equals(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"), "Development", StringComparison.OrdinalIgnoreCase))
{
    currentEnv = "LocalDebug";
}
else if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("WEBSITE_SITE_NAME")))
{
    currentEnv = "Azure";
}
else if (string.Equals(Environment.GetEnvironmentVariable("SYNOLOGY_DEPLOY"), "true", StringComparison.OrdinalIgnoreCase))
{
    currentEnv = "Synology";
}

// 按环境执行对应逻辑
switch(currentEnv)
{
    case "LocalDebug":
        // 本地调试专属逻辑
        break;
    case "Azure":
        // Azure环境专属逻辑
        break;
    case "Synology":
        // Synology环境专属逻辑
        break;
}

配置说明

  • 本地:在launchSettings.json中添加所需环境变量
  • Azure:在App Service的「配置」->「应用程序设置」中配置
  • Synology:Docker部署时在容器环境变量中添加;Web Station部署时在站点设置中添加

内容的提问来源于stack exchange,提问作者Ming Tong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:55:02