带有Azure Web App的ASP.NET 5 JSON

时间:2015-12-29 19:28:46

标签: asp.net azure asp.net-core azure-web-sites

我正在尝试将自定义配置用于我打算在Azure上托管的Web应用程序。环境变量应该可以覆盖配置,以便我可以在Azure门户上更改它。

我尝试使用以下代码,但它不起作用 - 详情如下

   public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
   {
      var builder = new ConfigurationBuilder()
                        .AddJsonFile("config.json", optional:true)
                        .AddEnvironmentVariables();
      Configuration = builder.Build();            
   }

   public IConfigurationRoot Configuration { get; set; }

   public void ConfigureServices(IServiceCollection services)
   {
      services.AddOptions(); 
      services.Configure<AppSettings>(Configuration);
   }

在控制器中,

public class HomeController : Controller
{
    private IOptions<AppSettings> Configuration;

    public HomeController(IOptions<AppSettings> configuration)
    {
        Configuration = configuration;
    }

    public async Task<IActionResult> Index()
    {
          string location = Configuration.Value.Location;   
          ...
    }

默认的config.json文件,

{
  "AppSettings": {
    "Location" : "Singapore"
  }
}

在Azure门户网站上,在应用程序设置下,我已将AppSettings:Location的值分配给美国,我期待控制器中的美国价值。

ConfigureServices本地,我可以看到值为新加坡,但在控制器动作索引中,它为空。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

当您阅读config.json时,您需要加载您想要阅读的部分,您需要更新您的代码,如下所示:

-Dlog4j.configuration=log4j-yourApp.properties