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

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

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

注解

使用 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, Boolean)

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

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

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

OpenMappedMachineConfiguration(ConfigurationFileMap)

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

RefreshSection(String)

刷新命名节,以便下次检索到它时,它将从磁盘重新读取。

适用于

另请参阅