• C#【必备技能篇】ConfigurationManager 类的使用(文件App.config的使用)



    前言

    在项目中,我们习惯使用 ConfigurationManager 来读取一些常量。如链接数据库字符串、一些需配置的数据(微信、QQ、支付宝)等的配置。我们需要把这些数据记录在 app.config 或者 web.config 中。接下来我们具体看一下 ConfigurationManager :

    一、介绍

    命名空间:System.Configuration

    程序集: System.Configuration.dll

    引用:在使用中,如果出现“当前上下文中不存在名称:ConfigurationManager”,你就要检查有没有引用程序集和命名空间了。
      在这里插入图片描述

    ConfigurationManager类:
    包含属性(AppSettings、ConnectionStrings )、
    方法(GetSection、OpenExeConfiguration、OpenExeConfiguration、OpenMachineConfiguration、OpenMappedExeConfiguration、OpenMappedExeConfiguration、OpenMappedMachineConfiguration、RefreshSection)

    二、使用

    2.1 通过 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();
                Console.ReadLine();
            }
    
            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");
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80

    在文件 App.config 中配置:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
      </startup>
      <appSettings>
        <add key="Setting1" value="May 5,2018"/>
        <add key="Setting2" value="May 5,2017"/>
      </appSettings>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行结果:
    Key: Setting1 Value: May 5,2018
Key: Setting2 Value: May 5,2017
May 5,2018
Not Found
Key: Setting1 Value: May 8, 2014
Key: Setting2 Value: May 5,2017
Key: NewSetting Value: May 7, 2014

    2.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]));  
                        }  
                    }  
                }  
            }  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在 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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    字符串与内存操作函数详解与模拟实现
    准备大半年,面试频繁受挫,Java岗面试为何越来越难?
    sqlite的文件导入操作
    计算机网络_实验9_IPv4地址划分 & 路由器
    【Pinia】Pinia的概念、优势及使用方式
    Spring Data Commons远程命令执行漏洞复现(CVE-2018-1273)
    AI房产户型图识别3DRender
    三、开发工具
    数据结构之双向带头循环链表函数功能实现与详细解析
    uniapp webview和H5通信的三种方式
  • 原文地址:https://blog.csdn.net/sinat_40003796/article/details/125601100