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

读取app.config中encryptedAppSettings节失败?.NET配置异常求助

解决.NET配置文件读取加密节返回null及"Required attribute 'Key' not found"异常

你的配置文件和读取逻辑存在几个明显错误,逐一修正即可解决问题:

错误点及修正方案

  1. 配置节定义格式错误
    你在configSections里定义encryptedAppSettings时,type属性没有用引号包裹,且缺少完整的程序集标识信息,Culture-neutral的写法也不符合规范。正确的NameValueSectionHandler类型定义需要包含程序集版本、文化和公钥令牌:

    <section name="encryptedAppSettings" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    

    同时applicationSettings节组的type属性里,PublicKeyToken的引号位置错误,修正为:

    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    
  2. 配置项属性名错误
    NameValueSectionHandler要求配置项使用key属性指定键名,你当前用的是name,这直接导致了"Required attribute 'Key' not found"的异常。把name改成key:

    <encryptedAppSettings>
        <add key="UnitTests.Properties.Settings.connectionString.password" value="password" />
    </encryptedAppSettings>
    
  3. Provider类型拼写错误
    ConfigProtectedData里的provider配置中,Culture=newutral是拼写错误,修正为Culture=neutral:

    <add name="MyProvider" type="System.Configuration.DpapiProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    

修正后的完整app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <section name="encryptedAppSettings" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </configSections>
    <ConfigProtectedData>
        <providers>
            <add name="MyProvider" type="System.Configuration.DpapiProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </providers>
    </ConfigProtectedData>
    <connectionStrings>
        <add name="UnitTests.Properties.Settings.connectionString" connectionString="...UserId=username;Password={0}" />
    </connectionStrings>
    <encryptedAppSettings>
        <add key="UnitTests.Properties.Settings.connectionString.password" value="password" />
    </encryptedAppSettings>
</configuration>

正确读取加密节的代码

using System.Configuration;

// 读取加密配置节
var encryptedSettings = ConfigurationManager.GetSection("encryptedAppSettings") as NameValueCollection;
if (encryptedSettings != null)
{
    string password = encryptedSettings["UnitTests.Properties.Settings.connectionString.password"];
    // 拼接完整连接字符串
    var connStringSetting = ConfigurationManager.ConnectionStrings["UnitTests.Properties.Settings.connectionString"];
    if (connStringSetting != null)
    {
        string fullConnString = string.Format(connStringSetting.ConnectionString, password);
        // 使用fullConnString进行数据库操作
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:31:12