2015-12-29 112 views
1

我想爲我想要在Azure上託管的Web應用程序使用自定義配置。配置應該可以被環境變量覆蓋,以便我可以在Azure門戶上進行更改。ASP.NET 5 JSON與Azure Web應用程序

我試着用下面的代碼,但它不工作 - 細節如下

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 Portal,在應用程序設置下,我已將值賦予AppSettings:Location美國和我期待美國在控制器中的價值。

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

我在這裏錯過了什麼嗎?

回答

1

當你正在閱讀的config.json,你需要加載您想要閱讀的部分,你需要更新你的代碼如下:

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

謝謝!不知道我是如何錯過它的! –

相關問題