You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.8 UserSecretsConfigBuilder令牌替换不全问题求助

问题:UserSecretsConfigBuilder无法替换web.config中非appSettings/connectionStrings节的令牌

我正在使用Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder尝试更新web.config文件中的令牌。根据文档说明,构建器配置中的mode="Expand"(v3.0版本为mode="Token")应作用于web.config的原始XML,替换所有${...}格式的令牌,但实际使用中并未实现此效果。

我的configSections和configBuilders配置如下:

<configSections>
    <section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />      
</configSections>
<configBuilders>
    <builders>
        <add name="Secrets" userSecretsFile="~\secrets.xml" mode="Expand" optional="true" type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </builders>
</configBuilders>

但运行应用时,以下内容安全策略的令牌未被替换:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Content-Security-Policy" value="${ContentSecurityPolicy}" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

同样,system.serviceModel和system.net节中的令牌也未被替换。请问是文档描述错误,该工具仍仅处理appSettings和connectionStrings吗?这会带来很大困扰。

解答

  • 没错,UserSecretsConfigBuilder(v2.0及更低版本)仅支持替换appSettings和connectionStrings节中的令牌,文档中关于mode="Expand"作用于整个XML的描述存在误导或不准确。
  • 即使设置了mode="Expand",该构建器的核心逻辑依然只针对键值对形式的配置节(即appSettings和connectionStrings)进行令牌替换,不会遍历处理web.config中的所有XML节点值。
  • 若要实现非标准配置节的令牌替换,可尝试以下方案:
    1. 升级到v3.0及以上版本的Microsoft.Configuration.ConfigurationBuilders.UserSecrets,并配置mode="Token"——但需注意v3版本对非标准节的支持仍有限制,部分复杂节点可能无法处理;
    2. 自定义配置构建器,实现遍历整个web.config XML节点并替换令牌的逻辑;
    3. 临时变通:将需要替换的值存入appSettings,再在目标节中使用ASP.NET表达式引用(如value="<%$ AppSettings:ContentSecurityPolicy %>"),此方法仅适用于支持该表达式的配置节。

内容的提问来源于stack exchange,提问作者codeMonkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:24:43