详情

首页手游攻略 C#读取App.config配置参数的实践教程与示例实用指南

C#读取App.config配置参数的实践教程与示例实用指南

佚名 2026-10-23 17:40:02

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“C#读取App.config配置参数的实践教程与示例”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

介绍

在这个场景下,系统在开发时,可能需设置默认参数,比如数据库的链接参数,某个参数的默认数据等等。对于这些数据,可直接在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 后,则正常。

总结

落到代码里,总的来说,C#读取App.config适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。

点击查看更多
推荐专题
热门阅读