如何覆盖 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.OAuth2RefreshToken
和 AdWordsApi:OAuth2RefreshToken
,但这并不容易。
P.S。知道是否可以使用其他自定义部分很有趣,例如,如果我想在服务器上使用另一种身份验证模式。
<system.web>
<authentication mode="None" />
</system.web>
如果您正在使用 Visual Studio,请使用 web.config 转换来更改配置设置,具体取决于您是 运行 在本地还是部署到 Azure:
简单来说,您再创建一个构建配置(通常是调试和发布)。在您的 Visual Studio 解决方案中,右键单击您现有的 web.config 文件并单击 "Add Config Transform"
,这将创建一个 Web.Debug.Config
和 Web.Release.Config
文件,然后您可以对其进行自定义具体设置视环境而定。 Link 这与你的 Azure 构建配置有关,然后你可以对本地和远程部署进行任意设置组合。
简而言之,这是不可能的。
您描述的机制仅适用于应用程序设置和连接字符串。高级,它的工作方式是:
- 您的 Azure 应用程序设置成为环境变量
- 在运行时,一个特殊的模块会在 .NET 配置系统中动态设置这些。请注意,物理 web.config 永远不会被修改。
但是很难使这种机制在任意配置部分上工作,因为如果不修改物理文件,这些部分就不会受到动态影响。
这是旧的,但留下了关于如何使用 潜在解决此问题的参考。
您可以通过执行 App.Release.config 中的以下步骤,按照 VSTS 中列出的值转换值:-
- 在配置部分添加 xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
</configuration>
- 在自定义部分添加 xdt:Transform="Replace",如下所示
<AdWordsApi xdt:Transform="Replace">
<add key="OAuth2RefreshToken" value="TOKEN" />
</AdWordsApi>
在发布管道中创建变量令牌,例如 OAuth2RefreshToken
然后在配置文件中使用如下
<AdWordsApi xdt:Transform="Replace">
<add key="OAuth2RefreshToken" value="#{OAuth2RefreshToken}#" />
</AdWordsApi>
在 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.OAuth2RefreshToken
和 AdWordsApi:OAuth2RefreshToken
,但这并不容易。
P.S。知道是否可以使用其他自定义部分很有趣,例如,如果我想在服务器上使用另一种身份验证模式。
<system.web>
<authentication mode="None" />
</system.web>
如果您正在使用 Visual Studio,请使用 web.config 转换来更改配置设置,具体取决于您是 运行 在本地还是部署到 Azure:
简单来说,您再创建一个构建配置(通常是调试和发布)。在您的 Visual Studio 解决方案中,右键单击您现有的 web.config 文件并单击 "Add Config Transform"
,这将创建一个 Web.Debug.Config
和 Web.Release.Config
文件,然后您可以对其进行自定义具体设置视环境而定。 Link 这与你的 Azure 构建配置有关,然后你可以对本地和远程部署进行任意设置组合。
简而言之,这是不可能的。
您描述的机制仅适用于应用程序设置和连接字符串。高级,它的工作方式是:
- 您的 Azure 应用程序设置成为环境变量
- 在运行时,一个特殊的模块会在 .NET 配置系统中动态设置这些。请注意,物理 web.config 永远不会被修改。
但是很难使这种机制在任意配置部分上工作,因为如果不修改物理文件,这些部分就不会受到动态影响。
这是旧的,但留下了关于如何使用
您可以通过执行 App.Release.config 中的以下步骤,按照 VSTS 中列出的值转换值:-
- 在配置部分添加 xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> </configuration>
- 在自定义部分添加 xdt:Transform="Replace",如下所示
<AdWordsApi xdt:Transform="Replace"> <add key="OAuth2RefreshToken" value="TOKEN" /> </AdWordsApi>
在发布管道中创建变量令牌,例如 OAuth2RefreshToken
然后在配置文件中使用如下
<AdWordsApi xdt:Transform="Replace"> <add key="OAuth2RefreshToken" value="#{OAuth2RefreshToken}#" /> </AdWordsApi>