为什么 appsettings.Development.json 中的值出现在生产中?

问题描述 投票:0回答:2

根据 Microsoft 的这篇文章,“如果未设置 DOTNET_ENVIRONMENT 和 ASPNETCORE_ENVIRONMENT,则默认值为 Production。部署到 Azure 的应用程序默认为 Production。”我没有在 Azure 应用服务的配置中设置这些值,但在代码中注入的 IConfiguration 中,我看到的是来自 appsettings.Development.json

 而不是 
appsettings.json
 的值。我还尝试显式将 ASPNETCORE_ENVIRONMENT 设置为“Production”,但结果是相同的。我做错了什么?

asp.net azure configuration azure-web-app-service
2个回答
0
投票
“如果未设置 DOTNET_ENVIRONMENT 和 ASPNETCORE_ENVIRONMENT,则 Production 为默认值。

是的,将 Web 应用程序部署到 Azure 应用服务后的

ASPNETCORE_ENVIRONMENT

 将成为生产环境。

    您可以通过检索
  • ASPNETCORE_ENVIRONMENT
     页面中的 
    .cshtml
     值来检查。
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment Environment <h3>ASPNETCORE ENVIRONMENT: @Environment.EnvironmentName</h3>

环境输出:

enter image description here

    我已在
  • appsettings.Development.json
     文件中设置了示例应用程序设置值。
"TestVal": "Value from appsettings.Development.json"

    我正在使用以下代码检索
  • .cshtml
    页面中的值。
@inject IConfiguration myconfig; <h3>TestVal: @myconfig["TestVal"]</h3>

本地输出:

enter image description here

部署的应用程序输出:

由于我在

appsettings.json

 中设置了相同的值,因此加载了 
appsettings.json
 文件中的值。

enter image description here

    如果
  • appsettings.json
    文件没有上述设置,则该值为空。

enter image description here

    如果您在
  • json
     中设置 
    Program.cs
     文件,如下所示,则只会加载该文件值。
builder.Configuration.AddJsonFile($"appsettings.Development.json", true, true); builder.Configuration.AddEnvironmentVariables();
确保您没有如上所述设置

json

文件。


0
投票
我发现了这个问题。我也在很久以前(Azure 之前)在

web.config

 中设置了环境变量。删除这些旧值解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.