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

为何System.Configuration读不到App.config自定义连接字符串

WPF读取App.config连接字符串返回null的修复方案

你遇到的问题由3个明确的配置/代码错误导致,按以下顺序修正即可解决:

  • 首先修复App.config的XML结构错误
    你贴出的配置文件根节点闭合标签写错了,文件末尾写的是起始标签<configuration>,不是正确的闭合标签</configuration>。XML格式不合法时,配置解析器会跳过损坏的自定义配置节,只加载系统默认预置的连接字符串项,这也是你遍历的时候只能看到系统默认项、找不到BasePath项的核心原因。
    修正后的最小可用配置参考:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <!-- 保留你原有的其他配置节内容 -->
        <connectionStrings>
            <add name="BasePath" connectionString="CString" />
        </connectionStrings>
    </configuration>
    
  • 修正配置读取逻辑,不要硬编码exe路径
    你代码里用OpenExeConfiguration("Filepath\app.exe")手动指定exe路径的写法非常容易出错:VS调试时可能用vshost宿主进程启动、输出目录路径变更、程序集名称修改都会导致你传的路径和实际运行的进程不匹配,读到的根本不是当前程序配套的配置文件。
    正常WPF应用不需要手动Open配置文件,直接读取当前应用域默认加载的配置即可,代码简化为:
    using System.Configuration;
    
    public static string GetConnection()
    {
        ConnectionStringSettings connSetting = ConfigurationManager.ConnectionStrings["BasePath"];
        return connSetting?.ConnectionString;
    }
    
    *注意:配置文件必须加在生成exe的WPF启动项目里,如果你把App.config加在附属类库项目中,是不会被主程序加载识别的。
  • 修正代码里的字符错误
    你贴出的判断逻辑中,"BasePath"、"CString"两个字符串的右引号是中文全角引号,会导致字符串匹配失败,确保代码里所有字符串的引号都是英文半角格式。

完成以上修正后重新生成项目即可正常读取到配置值,不需要反复重启VS或者重复生成解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:03:32