C# 通过指定路径读取配置文件实现方法
C# 默认使用程序运行目录下的配置文件(如 app.config)。若需读取特定路径的非标准配置文件,可使用 ExeConfigurationFileMap 类进行映射,并通过 ConfigurationManager.OpenMappedExeConfiguration 打开该配置对象,从而读取其中的 connectionStrings 和 appSettings 等数据节点。
结果与目标
本文旨在演示如何在 C# 代码中硬编码或通过逻辑获取一个绝对路径,并准确提取该路径下 .config 文件中的数据库连接字符串和应用程序键值对,适用于非标准配置路径的场景。
准备条件
- 目标配置文件: 假设存在一个名为
App1.config的文件,位于F:盘根目录下(根据示例路径)。 - 命名空间引用: 确保项目中已添加对
System.Configuration.dll的引用,并在代码顶部引入System.Configuration命名空间。 - 文件内容结构: 配置文件需包含标准的
connectionStrings和appSettings部分。
第1步:创建配置映射对象 (ExeConfigurationFileMap)
目的: 定义要读取的配置文件所在的具体物理路径。
操作: 实例化 ExeConfigurationFileMap 类,并将其 ExeConfigFilename 属性设置为目标文件的完整路径。
// 指定配置文件路径
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = @"F:\App1.config";
注意:路径前加 @ 符号表示逐字字符串,避免转义字符冲突;Windows 路径中建议使用反斜杠 \ 或双正斜杠 //。
第2步:打开并加载配置 (OpenMappedExeConfiguration)
目的: 将映射对象转换为实际可用的 Configuration 对象。
操作: 调用 ConfigurationManager.OpenMappedExeConfiguration 方法,传入上一步创建的 map 对象以及 ConfigurationUserLevel.None(表示不使用用户级别配置,读取机器级或默认配置)。
// 加载指定路径的配置
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
第3步:读取关键配置信息
目的: 从已加载的配置中提取具体数值。
操作: 分别通过 ConnectionStrings 和 AppSettings 集合按名称索引读取数据。
// 读取连接字符串 "connStr"
string connstr = config.ConnectionStrings.ConnectionStrings["connStr"].ConnectionString;
Console.WriteLine(connstr);
// 读取应用设置 "key"
string key = config.AppSettings.Settings["key"].Value;
Console.WriteLine(key);
排错与注意事项
- 文件权限问题: 如果程序没有读取
F:盘或特定文件的权限,会抛出ConfigurationErrorsException。请确保运行账户具备相应读权限。 - 空引用检查: 如果配置文件中不存在名为
"connStr"的连接字符串或"key"的设置,直接访问可能会返回 null。建议在工业级代码中加入判空逻辑。 - DLL 引用遗漏: 编译时若报错“找不到类型 System.Configuration”,请确认项目已正确引用
System.Configuration.dll。 - 安全提醒: 硬编码外部路径可能带来安全风险。生产环境中建议从注册表、环境变量或专用密钥管理服务中获取配置文件路径。
简要总结
通过 ExeConfigurationFileMap 映射特定路径,配合 ConfigurationManager.OpenMappedExeConfiguration 即可突破默认配置限制,实现对任意位置 .config 文件的精准读取。以上就是C#读取指定路径配置文件方法的详细内容,更多关于C#配置管理技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













