我正在尝试将自定义配置用于我打算在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
本地,我可以看到值为新加坡,但在控制器动作索引中,它为空。
我在这里错过了什么吗?
答案 0 :(得分:1)
当您阅读config.json时,您需要加载您想要阅读的部分,您需要更新您的代码,如下所示:
-Dlog4j.configuration=log4j-yourApp.properties