ConfigurationManager 类

定义

提供对客户端应用程序配置文件的访问。 此类不能被继承。

public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
继承
ConfigurationManager

示例

第一个示例演示一个简单的控制台应用程序,该应用程序读取应用程序设置、添加新设置并更新现有设置。

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");  
            }  
        }  
    }  
}  
Imports System.Configuration  
Module Module1  

    Sub Main()  
        ReadAllSettings()  
        ReadSetting("Setting1")  
        ReadSetting("NotValid")  
        AddUpdateAppSettings("NewSetting", "May 7, 2014")  
        AddUpdateAppSettings("Setting1", "May 8, 2014")  
        ReadAllSettings()  
    End Sub  

    Sub ReadAllSettings()  
        Try  
            Dim appSettings = ConfigurationManager.AppSettings  

            If appSettings.Count = 0 Then  
                Console.WriteLine("AppSettings is empty.")  
            Else  
                For Each key As String In appSettings.AllKeys  
                    Console.WriteLine("Key: {0} Value: {1}", key, appSettings(key))  
                Next  
            End If  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error reading app settings")  
        End Try  
    End Sub  

    Sub ReadSetting(key As String)  
        Try  
            Dim appSettings = ConfigurationManager.AppSettings  
            Dim result As String = appSettings(key)  
            If IsNothing(result) Then  
                result = "Not found"  
            End If  
            Console.WriteLine(result)  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error reading app settings")  
        End Try  
    End Sub  

    Sub AddUpdateAppSettings(key As String, value As String)  
        Try  
            Dim configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)  
            Dim settings = configFile.AppSettings.Settings  
            If IsNothing(settings(key)) Then  
                settings.Add(key, value)  
            Else  
                settings(key).Value = value  
            End If  
            configFile.Save(ConfigurationSaveMode.Modified)  
            ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name)  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error writing app settings")  
        End Try  
    End Sub  

End Module  

前面的示例假定项目具有如下所示的 App.config 文件。

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
    <startup>   
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />  
    </startup>  
  <appSettings>  
    <add key="Setting1" value="May 5, 2014"/>  
    <add key="Setting2" value="May 6, 2014"/>  
  </appSettings>  
</configuration>  

以下示例演示如何使用连接字符串从数据库读取数据。

using System;  
using System.Configuration;  
using System.Data.SqlClient;  

namespace ConsoleApplication1  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            ReadProducts();  
        }  

        static void ReadProducts()  
        {  
            var connectionString = ConfigurationManager.ConnectionStrings["WingtipToys"].ConnectionString;  
            string queryString = "SELECT Id, ProductName FROM dbo.Products;";  
            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]));  
                    }  
                }  
            }  
        }  
    }  
}  
Imports System.Configuration  
Imports System.Data.SqlClient  
Module Module1  

    Sub Main()  
        ReadProducts()  
    End Sub  

    Sub ReadProducts()  
        Dim connectionString = ConfigurationManager.ConnectionStrings("WingtipToys").ConnectionString  
        Dim queryString = "SELECT Id, ProductName FROM dbo.Products;"  
        Using connection As New SqlConnection(connectionString)  
            Dim command = New SqlCommand(queryString, connection)  
            connection.Open()  

            Using reader As SqlDataReader = command.ExecuteReader()  
                While reader.Read()  
                    Console.WriteLine(String.Format("{0}, {1}", reader(0), reader(1)))  
                End While  
            End Using  
        End Using  
    End Sub  

End Module  

前面的示例假定项目具有如下所示的 App.config。

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
    <startup>   
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />  
    </startup>  
    <connectionStrings>  
      <add name="WingtipToys" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=WingtipToys;Integrated Security=True;Pooling=False" />  
    </connectionStrings>  
</configuration>  

注解

ConfigurationManager 使你能够访问计算机、应用程序和用户配置信息。 此类替换 ConfigurationSettings 已弃用的 类。 对于 Web 应用程序,请使用 WebConfigurationManager 类。

若要使用 ConfigurationManager 类,项目必须引用程序集 System.Configuration 。 默认情况下,某些项目模板(如控制台应用程序)不引用此程序集,因此必须手动引用它。

注意

应用程序配置文件的名称和位置取决于应用程序的主机。 有关详细信息,请参阅 使用配置文件配置应用

可以使用内置 System.Configuration 类型或从它们派生来处理配置信息。 通过使用这些类型,可以直接使用配置信息,并且可以扩展配置文件以包含自定义信息。

ConfigurationManager 包括可用于执行以下任务的成员:

继承者说明

Configuration 支持以编程方式访问编辑配置文件。 使用 提供ConfigurationManager的方法之一Open。 这些方法返回 一个 Configuration 对象,该对象反过来又提供处理基础配置文件所需的方法和属性。 可以访问这些文件进行读取或写入。

若要读取配置文件,请使用 GetSection(String)GetSectionGroup(String)。 读取 的用户或进程必须具有以下权限:

  • 对当前配置层次结构级别的配置文件的读取权限。

  • 对所有父配置文件的读取权限。

如果应用程序需要对其自己的配置进行只读访问,建议使用 GetSection(String) 方法。 此方法提供对当前应用程序的缓存配置值的访问权限,其性能比 Configuration 类更好。

若要写入配置文件,请使用 方法之 Save 一。 写入的用户或进程必须具有以下权限:

  • 对当前配置层次结构级别的配置文件和目录的写入权限。

  • 对所有配置文件的读取权限。

属性

AppSettings

获取当前应用程序默认配置的 AppSettingsSection 数据。

ConnectionStrings

获取当前应用程序默认配置的 ConnectionStringsSection 数据。

方法

GetSection(String)

检索当前应用程序默认配置的指定配置节。

OpenExeConfiguration(ConfigurationUserLevel)

将当前应用程序的配置文件作为 Configuration 对象打开。

OpenExeConfiguration(String)

将指定的客户端配置文件作为 Configuration 对象打开。

OpenMachineConfiguration()

将当前计算机的配置文件作为 Configuration 对象打开。

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

将指定客户端配置文件作为 Configuration 对象打开,该对象使用指定的文件映射和用户级别。

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

可将指定的客户端配置文件作为使用指定文件映射、用户级别和预加载选项的 Configuration 对象打开。

OpenMappedMachineConfiguration(ConfigurationFileMap)

将计算机配置文件作为 Configuration 对象打开,该对象使用指定的文件映射。

RefreshSection(String)

刷新命名节,这样在下次检索它时将从磁盘重新读取它。

适用于

另请参阅