Редактирование Web.config программно

Что такое хороший способ редактировать файл Web.config программно?

Я просмотрел System.Xml, но не смог найти никаких очевидных ответов.

Ответ 1

Этот парень показывает пример кода, если вы все еще хотите сделать это после всех оговорок:

protected void EditConfigButton(object sender, EventArgs e)
{
   Configuration objConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
   AppSettingsSection objAppsettings = (AppSettingsSection)objConfig.GetSection("appSettings");
   //Edit
   if (objAppsettings != null)
   {
      objAppsettings.Settings["test"].Value = "newvalueFromCode";
      objConfig.Save();
   }
}

Одна действительная причина для редактирования web.config - это зашифровать его, о чем идет речь в этой статье.

Ответ 2

Вы можете использовать WebConfigurationManager для чтения определенных разделов конфигурации. Это вернет объект ConfigurationSection. Вы можете использовать это для чтения/изменения ConfigurationElements в этом разделе. После того, как вы их обновите, вы можете сохранить ConfigurationSection, и он обновит файл с вашими изменениями.

Я использую это, чтобы автоматически шифровать appSettings и connectionStrings в Application_Start, если они еще не зашифрованы. На самом деле, я не изменил никаких настроек, но похоже, что вы должны это сделать.

Сохранение обновленного файла конфигурации может привести к переходу приложения в зависимости от того, как оно построено.

Ответ 3

В зависимости от того, что вы делаете, в каждой ситуации метод действительно немного отличается. Однако наиболее надежный метод заключается в том, чтобы загрузить его как XmlDocument и изменить его по мере необходимости с помощью этого метода, но вы ДОЛЖНЫ быть осторожны, чтобы только модифицировать его соответствующим образом.

Ответ 4

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

Однако, если вы пытаетесь отредактировать свой web.config с сайта; он высоко не рекомендует. По крайней мере; вы будете запускать приложение reset каждый раз, когда вы его обновляете; что было бы особенно плохо, если вы используете сеансы в процессе.

Как спросил Андерс, что вы пытаетесь сделать?

Ответ 5

Да, я согласен с Джошем. Я пробовал это раньше, и у меня было два отрицательных эффекта:

  • Медленная загрузка, если текущая страница после обратной передачи, поскольку ASP.NET загружает файл web.config и все связанные ресурсы
  • Если вы измените web.config достаточно рано в цикле загрузки (например, события global.asax), сайт может никогда не загружаться и не отказываться непредсказуемыми способами.

Ответ 6

Согласитесь с другими, редактирование webconfig является достижимым, но имеет эффект постукивания только для опасного/связанного риска

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

Ответ 7

Много времени, которое вы хотите изменить параметры приложения после развертывания, например, скажите, когда что-то не так, например. переключение соединения с базой данных в случае понижения текущей БД. Кроме того, иногда вы хотите создать свой собственный файл конфигурации на основе XML, который вы хотите o изменять программно.

Попробуйте XML Webpad - http://xmlwebpad.codeplex.com/

Его структура для просмотра XML файлов редактирования. После того как вы интегрируете его со своим веб-приложением, редактирование web.config будет таким же простым, как просмотр страницы web.config, внесение необходимых изменений и нажатие кнопки сохранения (все из вашего приложения).