При разработке приложений с использованием .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 ();
Пример полного добавления / обновления / удаления:
Спасибо за прочтение. Надеюсь, это будет полезно.