我需要为我的网站公开一些简单的配置选项,这些选项应该易于更改,而无需重新编译或重新启动应用程序。我也希望这些选项可以缓存在应用程序中,但是当配置更改时(至少每隔几分钟)它们应该刷新。我的网站是一个ASP.NET Core MVC应用程序,它在Azure App Service上运行,并通过推送到git存储库进行部署,然后使用Kudu进行重建。
我当时正在考虑将配置与EF提供程序一起使用,但是需要大量的工作来支持在数据更改时重新加载配置。
我注意到JSON配置提供程序具有“ reloadOnChange”选项,因此这似乎是一个不错的选择。但是,我不确定应该将JSON文件放在Azure App Service环境中的哪个位置,以便应用程序可以轻松读取,在所有实例之间共享以及在部署之间保持持久性。我知道“ d:\ home”文件夹是共享的和持久的。 wwwroot在其中,但是担心重新部署应用程序时,文件有时会被删除。因此,我想将其放在父文件夹之一中,但是如何从C#代码访问主文件夹?我假设我不应该只是硬编码“ d:\ home”路径。
我也非常想知道实现目标的其他方法。
答案 0 :(得分:0)
实际上,您不必担心重新部署后它将删除var configuration = new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
文件。如果您更改配置,它将覆盖 json文件。
Remove additional files at destination
注意:发布应用程序时,记住不要单击“ appsetting.json
”。
此外,如果要在主文件夹中设置Environment.GetEnvironmentVariable("Home");
,则可以使用等于“ D:\ home”的ASPNETCORE_ENVIRONMENT
。
如果您这样设置,则需要将{{1}}设置为区分环境是天蓝色还是本地。