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

为何appsettings.Development.json配置值会出现在生产环境?

排查步骤与解决方案

1. 检查发布包中的配置文件是否异常

确认发布流程是否错误将appsettings.Development.json打包到生产发布包中。ASP.NET Core的配置加载顺序是appsettings.json → appsettings.{Environment}.json → 环境变量,若发布包中存在开发版配置文件,且环境被错误识别,就会优先读取它。

  • 检查.csproj文件,确保开发版配置不会被复制到发布目录:
    <ItemGroup>
      <None Update="appsettings.Development.json">
        <CopyToPublishDirectory>Never</CopyToPublishDirectory>
      </None>
    </ItemGroup>
    

2. 验证Azure App Service的实际环境变量值

Azure配置更新可能存在延迟或层级覆盖(如部署槽与主槽设置冲突),需确认实际生效的环境值:

  • 在Azure Portal的App Service控制台中,运行命令:Windows环境用echo %ASPNETCORE_ENVIRONMENT%,Linux环境用echo $ASPNETCORE_ENVIRONMENT,查看输出结果。
  • 临时添加代码端点输出当前环境:
    [HttpGet("current-env")]
    public IActionResult GetCurrentEnv(IWebHostEnvironment env)
    {
        return Ok(new { EnvName = env.EnvironmentName });
    }
    
    部署后访问该端点,确认环境是否为Production。

3. 检查启动代码的配置逻辑

确认Program.cs(或Startup.cs)中没有硬编码环境或强制加载开发配置:

  • 排查是否存在类似硬编码环境的代码:
    var builder = WebApplication.CreateBuilder(new WebApplicationOptions
    {
        EnvironmentName = Environments.Development // 此处会强制设置为开发环境
    });
    
  • 检查是否手动添加了开发版配置文件的加载:
    builder.Configuration.AddJsonFile("appsettings.Development.json", optional: true);
    
    这种代码会无视当前环境,强制加载开发配置。

4. 排查部署槽与发布配置的影响

  • 若使用Azure部署槽,检查部署槽的应用设置是否将ASPNETCORE_ENVIRONMENT设为Development,部署槽的配置可能覆盖主槽。
  • 确认本地launchSettings.json未被错误带入生产发布,该文件仅用于本地开发,正常发布流程不应影响生产环境,但部分工具可能存在异常。

5. 核对Azure运行时版本

确认Azure App Service使用的.NET版本与本地开发一致(如均为.NET 8),不同版本的环境变量处理逻辑可能存在差异。可在Azure Portal的App Service → 配置 → 常规设置中查看运行时版本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:55:05