在不使用应用程序设置的情况下覆盖Azure App Service上的环境变量

时间:2017-06-07 11:07:19

标签: azure azure-web-sites

我需要覆盖一个默认的Azure环境变量。最明显的方法是添加一个具有相同名称的应用程序设置,它将覆盖环境变量,但是,我想以不同的方式处理它,因为此变量本质上不是应用程序设置。

我的完美方法是在ARM部署期间设置它,但在检查Azure资源浏览器之后,看起来环境变量不会在任何地方暴露。存储在机器上的某些文件中的那些文件是否可以在部署期间进行转换?这可能是另一种解决方案。

1 个答案:

答案 0 :(得分:1)

  

我的完美方法是在ARM部署期间设置它,但在检查Azure资源浏览器之后,看起来环境变量不会在任何地方公开。

在ARM模板中,我们可以define the Application Settings应用于Web App。正如David Ebbo所说,请尝试从appsettings明确地将WEBSITE_DYNAMIC_CACHE设置为0。

{
    "name": "appsettings",
    "type": "config",
    "apiVersion": "2015-08-01",
    "dependsOn": [
        "[concat('Microsoft.Web/sites/', variables('webSiteName'))]"
    ],
  "tags": {
    "displayName": "WebAppSettings"
  },
  "properties": {
    "WEBSITE_DYNAMIC_CACHE": "0"
  }
}

更新:

我没有发现ARM模板中的资源/部分可用于直接注入环境变量。 XDT Transform提供了一种注入环境变量的方法,如果可能的话,你可以尝试使用它。

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">  
  <system.webServer> 
    <runtime xdt:Transform="InsertIfMissing">
      <environmentVariables xdt:Transform="InsertIfMissing">    
         <add name="WEBSITE_DYNAMIC_CACHE" value="0" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />    
      </environmentVariables>
    </runtime> 
  </system.webServer>
</configuration>