Azure应用服务上托管的ASP.NET Core应用的可重载自定义配置

时间:2018-07-04 09:08:22

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

我需要为我的网站公开一些简单的配置选项,这些选项应该易于更改,而无需重新编译或重新启动应用程序。我也希望这些选项可以缓存在应用程序中,但是当配置更改时(至少每隔几分钟)它们应该刷新。我的网站是一个ASP.NET Core MVC应用程序,它在Azure App Service上运行,并通过推送到git存储库进行部署,然后使用Kudu进行重建。

我当时正在考虑将配置与EF提供程序一起使用,但是需要大量的工作来支持在数据更改时重新加载配置。

我注意到JSON配置提供程序具有“ reloadOnChange”选项,因此这似乎是一个不错的选择。但是,我不确定应该将JSON文件放在Azure App Service环境中的哪个位置,以便应用程序可以轻松读取,在所有实例之间共享以及在部署之间保持持久性。我知道“ d:\ home”文件夹是共享的和持久的。 wwwroot在其中,但是担心重新部署应用程序时,文件有时会被删除。因此,我想将其放在父文件夹之一中,但是如何从C#代码访问主文件夹?我假设我不应该只是硬编码“ d:\ home”路径。

我也非常想知道实现目标的其他方法。

1 个答案:

答案 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}}设置为区分环境是天蓝色还是本地