C#读写参数到APP.Config
- 介绍
- 程序Demo
- 常见错误
介绍
系统在开发时,可能需要设置默认参数,比如数据库的链接参数,某个参数的默认数据等等。对于这些数据,可直接在app.config中读取。
在读写时,需要先了解configurationmanager类。
命名空间:System.Configuration 程序集: System.Configuration.dll
此类的作用为提供对客户端应用程序配置文件的访问。 此类不能被继承。
属性 | 描述 |
---|---|
AppSettings | 获取当前应用程序默认配置的AppSettingSection数据 |
ConnectionStrings | 获取当前应用程序默认配置的AppSettingSection数据 |
方法 | 描述 |
GetSection | 检索当前应用程序默认配置的指定配置节 |
OpenExeConfiguration | 检索当前应用程序默认配置的指定配置节 |
OpenMachineConfiguration | 将当前计算机的配置文件作为 Configuration 对象打开。 |
OpenMappedExeConfiguration | 将当前计算机的配置文件作为 Configuration 对象打开。 |
OpenMappedMachineConfiguration | 将计算机配置文件作为 Configuration对象打开,该对象使用指定的文件映射。 |
RefreshSection | 刷新命名节,这样在下次检索它时将从磁盘重新读取它。 |
程序Demo
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace demo132_APP.config的读写
{
class Program
{
static void Main(string[] args)
{
ReadAllSetting();
ReadSetting("a");
ReadSql();
Console.ReadKey();
//使用connectionStrings,常用于设置数据库链接参数
}
static void ReadAllSetting()
{
//读取App.config中Appsettingsection数据
try
{
var appsettings = ConfigurationManager.AppSettings;
if(appsettings.Count==0)
{
Console.WriteLine("AppSetting is empty");
}
else
{
foreach(var key in appsettings.AllKeys)
{
Console.WriteLine("Key:{0},Value:{1}", key, appsettings[key]);
}
}
}
catch(ConfigurationErrorsException)
{
Console.WriteLine("Error Reading Appsettings");
}
}
static void ReadSetting(string key)
{
//根据key值,读取appsettings中的值
try
{
var appsetting = ConfigurationManager.AppSettings;
string result = appsetting[key] ?? "Not Found";//??代表当appsetting为null时,result为Not Found,否则为appsetting[key]
Console.WriteLine(result);
}
catch(ConfigurationErrorsException)
{
Console.WriteLine("Error reading Appsetting");
}
}
static void AddUpdateSettings(string key,string value)
{
try
{
var configfile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var settings = configfile.AppSettings.Settings;
if(settings[key]==null)
{
settings.Add(key, value);
}
else
{
settings[key].Value = value;
}
configfile.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configfile.AppSettings.SectionInformation.Name);
}
catch(ConfigurationErrorsException)
{
Console.WriteLine("Error reading in Appsettings");
}
}
static void ReadSql()
{
try
{
var sqlcon = ConfigurationManager.ConnectionStrings["Sqlcon"].ConnectionString;
if(sqlcon != null)
{
Console.WriteLine(sqlcon.ToString());
}
else
{
Console.WriteLine("Nothing");
}
}
catch(ConfigurationErrorsException)
{
Console.WriteLine("Error in connectionstring");
}
}
}
}
常见错误
使用App.config配置参数,读取参数出现错误
“System.Configuration.ConfigurationErrorsException”类型的未经处理的异常在 System.Configuration.dll 中发生。其他信息: 配置系统未能初始化
解决办法:如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素。",将appSettings放到configSections 后,则正常。