门户中的 Azure 应用服务应用设置未覆盖 appsettings.json 值

Azure app service app settings in the portal are not overriding appsettings.json values

我在 Startup (asp.net core 2.2 proj) 中有以下内容:

 public Startup(IConfiguration configuration, IHostingEnvironment environment)
 {
        Configuration = configuration;
        Environment = environment;

        new ConfigurationBuilder()
            .SetBasePath(Environment.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true)
            .AddEnvironmentVariables()
            .Build();
 }

 public void ConfigureServices(IServiceCollection services)
 {
        var appSettings = new AppSettings();

        Configuration.Bind("appSettings", appSettings);

        services.AddSingleton(appSettings);

        ....
}

我已将值设置为覆盖 appsettings.json 中的所有应用设置值,但我的应用服务仍在使用 appsettings 中的内容,而不是我在门户中放置的内容。根据文档,应用服务的这些门户应用设置应覆盖 appsettings.json 文件并改为使用。我错过了一步吗?

谢谢

编辑:

即使将 Startup 更改为以下内容也不会获取我的 azure 应用程序设置:

    public Startup(IConfiguration configuration, IHostingEnvironment environment)
    {
        Configuration = configuration;
        Environment = environment;

        Configuration = new ConfigurationBuilder()
            .AddConfiguration(configuration)
            .SetBasePath(Environment.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true)
            .AddEnvironmentVariables()
            .Build();
    }

当您想在门户网站上获取 Appsettings 时,您需要使用 AppSettings:Hello 来引用 appsettings.*.json 文件中复杂结构中的变量名称。参考这个article。以下是您可以参考的步骤。

家庭控制器:

private AppSettings AppSettings { get; set; }
public HomeController(IOptions<AppSettings> appSettings)
{
    AppSettings = appSettings.Value;
}
public IActionResult Index()
{
    ViewBag.Message = AppSettings.Hello;
    return View();
}

AppSettings.cs:

public class AppSettings
{
    public string Hello { get; set; }
}

Startup.cs:

public Startup(IConfiguration configuration, IHostingEnvironment environment)
{
    Configuration = configuration;
    Configuration = new ConfigurationBuilder()
        .AddConfiguration(configuration)
        .SetBasePath(environment.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        .AddJsonFile($"appsettings.{environment.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables()
        .Build();
}
public void ConfigureServices(IServiceCollection services)
{
    services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
}

appsettings.json:

"AppSettings": {
    "Hello": "world"
}

在门户网站上:

并且输出:

WindowsLinux 容器有点不同。

对于以下设置:

"AppSettings": {
    "Hello": "world"
}

Windows 键: AppSettings:Hello

Linux 键: AppSettings__Hello