如何正确读取web.config配置中applicationSettings节点下的整数值
读取web.config中applicationSettings节点整数值的解决方法
applicationSettings的serializeAs枚举可选值仅包含String、Xml、Binary、Custom四类,确实没有Integer选项,所有数值类配置都是以String格式序列化存储,直接读取默认返回字符串类型,强转整数就会触发报错,只需要显式做类型转换即可,有两种常用实现方案:
方案1:使用自动生成的强类型配置(推荐)
- 打开项目属性页,切换到「设置」选项卡,找到
windowstime配置项,将类型从String修改为Int32 - 保存配置后VS会自动更新强类型配置类的逻辑,无需手动修改web.config的serializeAs属性,直接调用即可自动完成类型转换:
int windowsTime = HHH.Properties.Settings.Default.windowstime;
方案2:手动读取配置节点并转换
如果不想修改项目配置设计器,可以手动读取配置节解析:
- 首先在项目中添加
System.Configuration程序集引用 - 使用如下代码读取解析:
using System.Configuration; // 获取对应配置节 ClientSettingsSection settings = ConfigurationManager.GetSection("applicationSettings/HHH.Properties.Settings") as ClientSettingsSection; if (settings != null) { // 读取配置的字符串值 string timeStr = settings.Settings.Get("windowstime").Value.ValueXml.InnerText; // 安全转换为整数 if (int.TryParse(timeStr, out int windowsTime)) { // 此处直接使用转换后的整数值即可 } else { // 配置值格式错误时的容错逻辑,例如设置默认值 // windowsTime = 86400; } }
注意事项
- 手动转换时优先使用
int.TryParse而非强制类型转换,避免配置值被误写为非数字内容时触发未处理异常 - 有多个数值类配置需要读取时,可以封装通用的读取方法减少重复代码
内容的提问来源于stack exchange,提问作者Raulus
相关产品推荐
相关产品推荐

