При разработке приложений с использованием .NET существуют определенные параметры, которые необходимо предоставить приложению и к которым можно получить доступ на регулярной основе (например, строки подключения к базе данных). Эти настройки обычно задаются в файлах app / web.config.

В этом посте я расскажу, как читать, обновлять и записывать файлы конфигурации в вашем приложении.

Во-первых, чтобы получить доступ к конфигурации вашего проекта, вам необходимо добавить сборку System.Configuration в ссылки на ваш проект и убедиться, что она отображается в ссылках на ваш проект:

В зависимости от типа приложения вы будете использовать один из двух менеджеров конфигурации:

1. WebConfigurationManager ( пространство имен: System.Web.Configuration )

Это предпочтительный способ доступа и работы с конфигурациями в веб-приложении, поскольку он был разработан специально для приложений ASP.NET. В зависимости от раздела Web.config, к которому вам нужен доступ, вы можете используйте один из методов или свойств WebConfigurationManager.

2. ConfigurationManager ( пространство имен: System.Configuration )

Используется для клиентских приложений (например, консольных приложений)

* Я подробнее расскажу о различиях между ConfigurationManager и WebConfigurationManager в более поздней публикации.

В этом посте я буду использовать WebConfigurationManager

Когда мы переходим к доступу к файлу Web.config, способ доступа к файлу будет зависеть от конфигурации, необходимой из файла.

Если вам нужен доступ к разделам ‹AppSettings› или ‹connectionStrings› в Web.config, вы можете использовать WebConfigurationManager AppSettings или ConnectionStrings свойства. В качестве альтернативы, если необходимы другие разделы в файле Web.config, вы можете использовать один из методов, предоставляемых WebConfigurationManager (подробнее см. Ниже).

Чтение из Web.config

Использование свойств AppSettings и ConnectionStrings

1. WebConfigurationManager.AppSettings (тип: NameValueCollection)

Это можно сделать следующим образом (добавьте в свой класс «using System.Collections.Specialized»):

NameValueCollection appSettings = WebConfigurationManager.AppSettings;

Для следующего раздела ‹AppSettings›:

Это будет возвращено:

В истинном режиме ключ / значение к значениям каждого ключа можно получить доступ, сославшись на ключ , например. «AppSettings [« веб-страницы: Версия »]». Подробнее об этом ниже.

2. WebConfigurationManager.ConnectionStrings (тип: ConnectionStringSettingsCollection)

ConnectionStringSettingsCollection MyConnectionStrings = WebConfigurationManager.ConnectionStrings;

Где мой раздел ‹connectionStrings› выглядит следующим образом:

MyConnectionStrings будет содержать коллекцию объектов ConnectionStringSettings, по одному для каждой записи, заданной в разделе ‹connectionStrings›.

Используя указанные выше свойства, вы только сможете читать значения свойств в файле Web.config. Вы не сможете их сбросить.

Когда у вас есть соответствующие объекты, вы можете использовать foreach для циклического перебора каждой коллекции.

Чтобы получить доступ к другим разделам файла Web.config, вам необходимо указать относительный путь к вашей конфигурации. Обычно Web.config находится в корневом каталоге:

строка path = Request.ApplicationPath;

Используя один из открытых методов для WebConfigurationManager OpenWebConfiguration метод, будет возвращен объект конфигурации. Класс Configuration предоставляет свойства и методы для программного доступа и редактирования базовых файлов конфигурации. Эти методы воссоздают данные конфигурации каждый раз при открытии файла и выполняют операции чтения или записи:

Конфигурация config = WebConfigurationManager.OpenWebConfiguration (путь);

После возврата объекта Configuration мы можем использовать метод GetSection () для получения раздела (например ‹connectionStrings›) из Интернета. .Config

ConnectionStringsSection connectionStringsSection = (ConnectionStringsSection) config .GetSection («connectionStrings»)

указанную выше строку также можно выполнить с помощью метода GetSection (), предоставляемого WebConfigurationManager, без вызова метода OpenWebConfiguration:

ConnectionStringsSection connectionStringsSection = (ConnectionStringsSection) WebConfigurationManager .GetSection («connectionStrings»);

После того, как вы приведете раздел в файле конфигурации к объекту, вы сможете использовать свойства, связанные с этими объектами.

Пример полного чтения:

Обновление Web.config

Когда дело доходит до обновления web.config, очень просто добавлять, обновлять и удалять ключи или даже разделы в файле Web.config.

Следуя той же схеме, которую мы использовали для доступа к конфигурации в Web.config, мы используем метод open, предоставляемый WebConfigurationManager, чтобы получить объект Configuration:

строка path = Request.ApplicationPath;

Конфигурация конфигурации = WebConfigurationManager.OpenWebConfiguration (путь);

Когда дело доходит до обновления любого раздела в web.config, всегда используются две приведенные выше строки. В зависимости от обновляемого раздела следующие данные могут отличаться.

В этом примере я буду обновлять раздел ‹appSettings› в web.config, поэтому нам нужно будет получить этот раздел из конфигурации с помощью метода GetSection ( мы не можем использовать свойство AppSettings, поскольку это свойство только для чтения).

AppSettingsSection appSettingsSection = (AppSettingsSection) configuration.GetSection («appSettings»);

AppSettingsSection содержит свойство Settings, которое можно использовать для доступа к коллекции пар ключ / значение, которые находятся в разделе ‹appSettings› файла web.config.

KeyValueConfigurationCollection settings = appSettingsSection.Settings;

Как только мы получим настройки, мы сможем перебирать ключи (f oreach (строковый ключ в appSettings.Settings.AllKeys)) и соответственно обновлять / удалять ключи.

Добавление нового ключа / значения в ‹AppSettings›

Чтобы добавить новый ключ, вам просто нужно добавить новую запись в коллекцию KeyValueConfigurationCollection, используя метод Add, а затем метод save, чтобы обновить файл конфигурации с новым ключом / пара значений.

settings.Add («NewKey», «NewValue»);

configuration.Save ();

Обновление ключа / значения в ‹AppSettings›

Чтобы обновить значение в AppSettings, настройте таргетинг на конфигурацию с помощью ключа и сбросьте его значение. Это также должно сопровождаться методом сохранения, чтобы обновить файл конфигурации с обновленным значением.

настройки [«Заголовок»]. Значение = «Новый заголовок»;

configuration.Save ();

Удаление ключа / значения в ‹AppSettings›

Чтобы удалить существующий ключ, вам просто нужно удалить запись из KeyValueConfigurationCollection, используя метод Remove, а затем метод save, чтобы удалить конфигурацию из файла web.config.

settings.Remove («NewKey»);

configuration.Save ();

Пример полного добавления / обновления / удаления:

Спасибо за прочтение. Надеюсь, это будет полезно.