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

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

我在启动中具有以下内容(asp.net core 2.2项目):

 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文件并被使用。我错过了一步吗?

谢谢

编辑:

即使将“启动”更改为以下内容也无法使用我的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();
    }
.net azure asp.net-core appsettings
2个回答
0
投票

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

HomeController:

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"
}

在门户网站上:

enter image description here

和输出:

enter image description here


0
投票

尝试呼叫.UseStartup<Startup>()

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

.UseStartup<Startup>();
© www.soinside.com 2019 - 2024. All rights reserved.