2010-10-29 4 views
2

Как изменить параметр приложения в программном обеспечении web.copnfig с помощью C# (из другого приложения, которое настраивает веб-приложение)? Следующий код, отрезанный, не работает, потому что AppSettings [...] is readonly!web.config: Изменение настройки приложения с помощью C#

configuration = WebConfigurationManager.OpenWebConfiguration(...); 

ConfigurationSectionGroup configurationSectionGroup = (ConfigurationSectionGroup)configuration.GetSectionGroup("applicationSettings"); 

ConfigurationSection configurationSection = (ConfigurationSection)configurationSectionGroup.Sections[...]; 

configurationSection.CurrentConfiguration.AppSettings[...].value = value 

ответ

3

вы можете изменить app.config. я сделал это, загрузив его как XML-документ и изменив его узлы. Я думаю, что это можно сделать для webüconfig.

это пример того, как читать web.config с помощью XML, но использование может сделать некоторые изменения в нем, чтобы использовать его для записи: http://dotnetacademy.blogspot.com/2010/10/read-config-file-using-xml-reader.html

XmlDocument xmlDoc = new XmlDocument();  
xmlDoc.Load(Server.MapPath("~/") + "app.config");  
XmlNode node = xmlDoc.SelectSingleNode("Root/Node/Element"); 
node.Attributes[0].Value = newValue;  
xmlDoc.Save(xmlFile); 

ниже звена, обеспечивающего хороший пример того, как изменить значение xml node: http://www.fryan0911.com/2009/10/change-xml-file-node-value-using-c.html

+0

@: Не могли бы вы рассказать мне, почему вы дали мне -1. потому что я протестировал его и отлично работал с app.config. –

0

Вы не можете изменить App.config или Web.config из хост-приложения, то есть собственные настройки из себя.

Только из внутреннего приложения.

0

Поскольку никто не сказал этого, пожалуйста, никогда не изменяйте настройки web.config программно в приложении ASP.NET. Во-вторых, это изменение (независимо от того, как это выполняется) приведет к немедленному перезапуску пула приложений, в результате чего ваши кэши будут очищены, ваши пользовательские сеансы перестанут работать, плохая производительность и всевозможные другие плохие вещи. Если параметр должен быть изменен во время выполнения, найдите другое место для его сохранения. Существует причина, по которой инженеры Microsoft сделали класс AppSettings для чтения. Кроме того, если вы были в многосерверной среде, вы изменили бы только файл web.config для одного из серверов, оставив ваши настройки в разных состояниях на разных серверах.

+0

Это честный комментарий, но, как всегда, с исключениями. Хорошим исключением может быть веб-приложение, позволяющее пользователю добавить лицензионный ключ, что-то, что вы хотели бы вызвать перезагрузку в любом случае. – AnthonyVO

Смежные вопросы