C# ConfigurationManager 类的使用
一、前言
在项目中,我们习惯使用 ConfigurationManager 来读取一些常量。如链接数据库字符串、一些需配置的数据(微信、QQ、支付宝)等的配置。我们需要把这些数据记录在 app.config 或者 web.config 中。接下来我们具体看一下 ConfigurationManager :
二、介绍
命名空间:System.Configuration
程序集: System.Configuration.dll
引用:在使用中,如果出现“ 当前上下文中不存在名称:ConfigurationManager ”,你就要检查有没有引用程序集和命名空间了。
ConfigurationManager类: 包含属性(AppSettings、ConnectionStrings )、方法(GetSection、OpenExeConfiguration、OpenExeConfiguration、OpenMachineConfiguration、OpenMappedExeConfiguration、OpenMappedExeConfiguration、OpenMappedMachineConfiguration、RefreshSection)
三、使用
通过 AppSettings 来获取数据,简单使用案例:
using System; using System.Configuration; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ReadAllSettings(); ReadSetting("Setting1"); ReadSetting("NotValid"); AddUpdateAppSettings("NewSetting", "May 7, 2014"); AddUpdateAppSettings("Setting1", "May 8, 2014"); ReadAllSettings(); } static void ReadAllSettings() { try { var appSettings = ConfigurationManager.AppSettings; if (appSettings.Count == 0) { Console.WriteLine("AppSettings is empty."); } else { foreach (var key in appSettings.AllKeys) { Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]); } } } catch (ConfigurationErrorsException) { Console.WriteLine("Error reading app settings"); } } static void ReadSetting(string key) { try { var appSettings = ConfigurationManager.AppSettings; string result = appSettings[key] ?? "Not Found"; Console.WriteLine(result); } catch (ConfigurationErrorsException) { Console.WriteLine("Error reading app settings"); } } static void AddUpdateAppSettings(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 writing app settings"); } } } }
在文件 App.config 中配置:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <appSettings> <add key="Setting1" value="May 5,2018"/> <add key="Setting2" value="May 5,2017"/> </appSettings> </configuration>
2、通过使用 ConnectionStrings 来获取数据,使用案例
using System; using System.Configuration; using System.Data.SqlClient; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ReadUsers(); } static void ReadUsers() { var connectionString = ConfigurationManager.ConnectionStrings["Default"].ConnectionString; string queryString = "SELECT Id, Name FROM abpusers;"; using (var connection = new SqlConnection(connectionString)) { var command = new SqlCommand(queryString, connection); connection.Open(); using (var reader = command.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1])); } } } } } }
在 App.config 中配置数据库链接字符串:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <appSettings> <add key="Setting1" value="May 5,2018"/> <add key="Setting2" value="May 5,2017"/> </appSettings> <connectionStrings> <add name="Default" connectionString="Server=127.0.0.1; Database=CityManage; Trusted_Connection=False; Uid=root; pwd=zxx123456;" providerName="System.Data.SqlClient" /> <add name="Abp.Redis.Cache" connectionString="localhost" /> </connectionStrings> </configuration>
简单小节,资源来源于:官网教程
------------------------------------------------
愿今日之努力日后想起还能浅浅一笑,不愿今日之颓废用长长一生去悔恨!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!