如何覆盖 Azure Web App 自定义部分中的 web.config 值?

How to override web.config values in custom section in Azure Web App?

在 Azure Web App 中可以轻松覆盖 web.config AppSettings 部分。例如。如果我有以下 web.config:

<appSettings>   
    <add key="AllowedCORSOrigin" value="http://localhost:26674"/>
</appSettings>

我可以在门户中的应用设置 UI 中覆盖它,就像这样:

我在 web.config 中也有一个自定义部分:

<AdWordsApi>
    <add key="OAuth2RefreshToken" value="TOKEN" />
</AdWordsApi>

是否也可以通过某种方式覆盖它?我已经尝试了 AdWordsApi.OAuth2RefreshTokenAdWordsApi:OAuth2RefreshToken,但这并不容易。

P.S。知道是否可以使用其他自定义部分很有趣,例如,如果我想在服务器上使用另一种身份验证模式。

<system.web>
    <authentication mode="None" />
</system.web>

如果您正在使用 Visual Studio,请使用 web.config 转换来更改配置设置,具体取决于您是 运行 在本地还是部署到 Azure:

How to Transform Web.config

简单来说,您再创建一个构建配置(通常是调试和发布)。在您的 Visual Studio 解决方案中,右键单击您现有的 web.config 文件并单击 "Add Config Transform",这将创建一个 Web.Debug.ConfigWeb.Release.Config 文件,然后您可以对其进行自定义具体设置视环境而定。 Link 这与你的 Azure 构建配置有关,然后你可以对本地和远程部署进行任意设置组合。

简而言之,这是不可能的。

您描述的机制仅适用于应用程序设置和连接字符串。高级,它的工作方式是:

  • 您的 Azure 应用程序设置成为环境变量
  • 在运行时,一个特殊的模块会在 .NET 配置系统中动态设置这些。请注意,物理 web.config 永远不会被修改。

但是很难使这种机制在任意配置部分上工作,因为如果不修改物理文件,这些部分就不会受到动态影响。

这是旧的,但留下了关于如何使用 潜在解决此问题的参考。

您可以通过执行 App.Release.config 中的以下步骤,按照 VSTS 中列出的值转换值:-

  1. 在配置部分添加 xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    </configuration>
  1. 在自定义部分添加 xdt:Transform="Replace",如下所示
<AdWordsApi  xdt:Transform="Replace">
    <add key="OAuth2RefreshToken" value="TOKEN" />
</AdWordsApi>
  1. 在发布管道中创建变量令牌,例如 OAuth2RefreshToken

  2. 然后在配置文件中使用如下

<AdWordsApi  xdt:Transform="Replace">
    <add key="OAuth2RefreshToken" value="#{OAuth2RefreshToken}#" />
</AdWordsApi>