如何在自动部署后更改appsettings.json中的设置?

时间:2016-10-23 19:09:33

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

我有一个ASP.NET Core应用程序正在设置Github自动部署它。但由于它是一个开放的回购,我显然不想上传我正确的配置文件。

我想做的是在github自动部署后替换appsettings.json中的一些字符串。

"AppSettings": {
    "Token": "my super duper secret token"
}

如何在Azure上部署github之后将my super duper secret token更改为我的真实令牌?

4 个答案:

答案 0 :(得分:15)

据我所知,我们可以在Azure端口的App Settings中配置令牌。 我对此进行了测试,它运行成功,以下是我的详细步骤。

  1. 创建一个Asp.net核心应用程序。
  2. 在appsetting.json文件中添加[AppSettings]部分(令牌vaule:mysecretkey )。 enter image description here
  3. 在创建的项目下添加公共类AppSettings.cs。 enter image description here
  4. 在Startup.cs文件(适用于.net Core 1.0)
  5. 中的函数ConfigureService函数中添加代码services.Configure<AppSettings>(Configuration.GetSection("AppSettings"))
      

    注意:模型绑定的语法已从RC1更改为RC2。使用services.Configure<AppSettings>(Configuration.GetSection("AppSettings"))不再可用为了将设置类绑定到您的配置,您需要在Startup.cs的ConfigureServices方法中配置它:       services.Configure<AppSettings>(options => Configuration.GetSection("AppSettings").Bind(options));

    enter image description here 5.将代码添加到HomeController.cs文件中。 enter image description here

    1. 将WebApp发布到Azure门户。
    2. 在Azure门户中添加[AppSettings:Token]。 enter image description here
    3. 浏览WebApp并选择about选项卡以查看令牌值是门户网站中设置的值。 enter image description here

答案 1 :(得分:3)

假设网站已作为Azure中的资源存在,您只需在门户中设置应用程序设置/连接字符串即可。这些将在运行时覆盖appsettings.json文件中的那些。 IE浏览器。您的应用程序将首先查看azure应用程序设置/连接字符串,然后在本地文件中查找它们。这是asp.net核心&#34;云首先&#34;的一部分。配置管理方法。将代码部署到app / slot时,这些设置不会被覆盖。

在此处找到blog post,其中更详细地介绍了它,使用.AddEnvironmentVariables()调用将azure插槽设置添加到配置中。

答案 2 :(得分:0)

开发人员工具设置中有代码编辑功能(设置 - &gt;开发工具 - &gt;应用服务编辑器(预览))。你可以去那里并在那里更改你喜欢的任何文件。但是您可能需要重新启动Web应用程序(通过编辑web.config或其他方式)。您也可以使用Kudu(高级工具),但它不像第一个选项中的Visual Studio Code那样令人愉快。

虽然处理应用程序机密的更先进和更正确的方法是特殊的秘密管理器。您可以在asp.net文档here上阅读更多相关信息。

通常,这是一种从受保护的数据存储加载秘密并使用生产中的环境变量覆盖它们的方法(可以在azure web app中设置)。

答案 3 :(得分:0)

如果使用Azure DevOps版本进行部署,则可以轻松地为每个环境/阶段指定属性。 您可以使用任务“文件转换”并指定appsettings.json的路径: Azure DevOps Release - Task File transform

或者直接部署到Azure:

Azure DevOps Release - Task File Azure App Service Deploy

因此,您只需要创建变量以覆盖设置中的数据即可:

Azure DevOps Release Variables