为何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配置文件,直接读取当前应用域默认加载的配置即可,代码简化为:
*注意:配置文件必须加在生成exe的WPF启动项目里,如果你把App.config加在附属类库项目中,是不会被主程序加载识别的。using System.Configuration; public static string GetConnection() { ConnectionStringSettings connSetting = ConfigurationManager.ConnectionStrings["BasePath"]; return connSetting?.ConnectionString; } - 修正代码里的字符错误
你贴出的判断逻辑中,"BasePath"、"CString"两个字符串的右引号是中文全角引号,会导致字符串匹配失败,确保代码里所有字符串的引号都是英文半角格式。
完成以上修正后重新生成项目即可正常读取到配置值,不需要反复重启VS或者重复生成解决方案。
内容的提问来源于stack exchange,提问作者AbelTsh3047
相关产品推荐
相关产品推荐

