2010-10-29 40 views
2

如何使用C#(來自另一個配置Web應用程序的應用程序)以編程方式更改web.copnfig中的應用程序設置? 以下代碼被禁用不起作用,因爲AppSettings [...]只讀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文檔加載並更改其節點來完成此操作。我認爲可以爲webconfig進行同樣的操作。

這是例如如何使用XML來讀取web.config文件,但使用可以做一些改變來使用它的書寫: 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節點: http://www.fryan0911.com/2009/10/change-xml-file-node-value-using-c.html

+0

@:你能告訴我你爲什麼給我-1。因爲我已經測試過它,並且它的工作狀態與app.config很好。 – 2010-10-29 11:56:01

0

您不能從主機應用程序更改App.config或Web.config,即自己的設置。

僅限內部應用程序。

0

由於沒有人說過這一點,請不要以編程方式在ASP.NET應用程序中更改web.config設置。第二個更改(無論它是如何實現的)將導致應用程序池立即重新啓動,導致緩存刷新,用戶會話丟失,性能下降以及各種其他不好的事情。如果設置需要能夠在運行時更改,請找到另一個地方來存儲它。微軟工程師爲什麼只能讀取AppSettings類是有原因的。另外,如果您處於多服務器環境中,則只會更改其中一臺服務器的web.config,而將您的設置保存在不同服務器上的不同狀態中。

+0

這是一個公平的評論,但與往常一樣例外。一個很好的例外可能是允許用戶添加許可證密鑰的網絡應用程序,無論如何您都希望觸發重新加載。 – AnthonyVO 2013-09-03 12:27:07

相關問題