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

use*_*182 5 .net appsettings azure asp.net-core

我在启动(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);

        ....
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢

编辑:

即使将启动更改为以下内容也不会选择我的天蓝色应用程序设置:

    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();
    }
Run Code Online (Sandbox Code Playgroud)

Joe*_*Cai 6

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

家庭控制器:

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

应用程序设置.cs:

public class AppSettings
{
    public string Hello { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

启动.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"));
}
Run Code Online (Sandbox Code Playgroud)

应用程序设置.json:

"AppSettings": {
    "Hello": "world"
}
Run Code Online (Sandbox Code Playgroud)

在门户网站上:

在此输入图像描述

和输出:

在此输入图像描述


N-a*_*ate 6

WindowsLinux容器有点不同。

对于以下设置:

"AppSettings": {
    "Hello": "world"
}
Run Code Online (Sandbox Code Playgroud)

Windows 键: AppSettings:Hello

Linux 密钥: AppSettings__Hello