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, который устарел. Для веб-приложений используйте класс WebConfigurationManager.
Чтобы использовать класс ConfigurationManager, проект должен ссылаться на сборку System.Configuration
. По умолчанию некоторые шаблоны проектов, такие как консольное приложение, не ссылайтесь на эту сборку, поэтому необходимо вручную ссылаться на нее.
Заметка
Имя и расположение файла конфигурации приложения зависит от узла приложения. Дополнительные сведения см. в разделе Настройка приложений с помощью файлов конфигурации.
Вы можете использовать встроенные типы System.Configuration или производные от них для обработки сведений о конфигурации. Используя эти типы, вы можете работать непосредственно с сведениями о конфигурации и расширить файлы конфигурации для включения пользовательских сведений.
Класс ConfigurationManager включает элементы, которые позволяют выполнять следующие задачи:
Чтение раздела из файла конфигурации. Чтобы получить доступ к сведениям о конфигурации, вызовите метод GetSection. Для некоторых разделов, таких как
appSettings
иconnectionStrings
, используйте классы AppSettings и ConnectionStrings. Эти члены выполняют операции только для чтения, используют один кэшированный экземпляр конфигурации и имеют многопоточное представление.Чтение и запись файлов конфигурации в целом. Приложение может считывать и записывать параметры конфигурации на любом уровне, самостоятельно или для других приложений или компьютеров, локально или удаленно. Используйте один из методов, предоставляемых классом ConfigurationManager, чтобы открыть файл конфигурации, например SampleApp.exe.config. Эти методы возвращают объект Configuration, который, в свою очередь, предоставляет методы и свойства, которые можно использовать для работы с связанными файлами конфигурации. Методы выполняют операции чтения или записи и создают данные конфигурации при каждом написании файла.
Поддержка задач конфигурации. Для поддержки различных задач конфигурации используются следующие типы:
Помимо работы с существующими сведениями о конфигурации, можно создавать и работать с пользовательскими элементами конфигурации, расширяя встроенные типы конфигурации, такие как ConfigurationElement, ConfigurationElementCollection, ConfigurationPropertyи классы ConfigurationSection. Пример расширения встроенного типа конфигурации программным способом см. в ConfigurationSection. Пример расширения встроенного типа конфигурации, использующего модель на основе атрибутов, см. в ConfigurationElement.
Примечания для тех, кто наследует этот метод
Класс Configuration обеспечивает программный доступ для редактирования файлов конфигурации. Вы используете один из методов Open
, предоставляемых ConfigurationManager. Эти методы возвращают объект 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) |
Обновляет именованный раздел так, чтобы при следующем извлечении он будет повторно считываться с диска. |