2010-11-09 57 views
2

我正在使用一個Asp.net動態網站應用程序,無法將配置保存到web.config文件中。如何將配置保存到web.config文件中?

我試過這樣的東西,但不起作用!

var configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); 

     configuration.AppSettings.Settings["Value"].Value = "Some value"; 
     configuration.Save(); 

錯誤我與

1. OpenWebConfiguration(Server.MapPath(".")) & OpenWebConfiguration(Server.MapPath("~"): 

The relative virtual path 'C:/...' is not allowed here. 

2. OpenWebConfiguration("~") 

    An error occurred loading a configuration file: Failed to map the path '/'. 

了我真的不知道該怎麼辦了。

+2

您不想在運行時修改您的web配置。您將強制您的應用程序池/網絡應用程序重新啓動,因此您將失去所有會話,並在您的下一個請求中產生開銷。相反,您希望將此數據保存到數據庫中的表中。 – danielfishr 2010-11-09 22:39:08

回答

2

documentation它聲明傳遞路徑的空值將打開默認的web.config文件。
看看你的代碼,它不會顯示你實際上在你的路徑中指定了一個配置文件名。

所以使用:

OpenWebConfiguration(null) 

編輯:O.K.我已經做了一些進一步的調查,並通過null將訪問C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Config文件夾中的服務器默認web.config文件,這不是你想要在這種情況下。
傳「〜」應該給你訪問到Web應用程序默認的web.config文件,我已經成功地在Visual Studio 2008和.NET 3.5使用下面的代碼測試此:

Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); 
    config.AppSettings.Settings["test"].Value = "Hello"; 
    config.Save(); 

我不知道爲什麼這不適合你的情況。我建議在創建Configuration對象的代碼行放置一個斷點,並在Visual Studio IDE中使用「Immediate Window」調用WebConfigurationManager的靜態OpenWebConfiguration方法,以查看可以得到的結果。輸入類似WebConfigurationManager.OpenWebConfiguration("~").AppSettings.Settings.AllKeys應表明您是否成功訪問web.config。

+0

Null有幫助,但在下一行中,我收到錯誤「對象引用未設置爲對象的實例」,因爲沒有獲得密鑰。 – ledcomp 2010-11-09 13:44:17

+0

你有其他想法嗎? – ledcomp 2010-11-09 14:01:04

+0

你能給你的web.config(有一個值)和讀取它的代碼的真實例子嗎? – Artemiy 2010-11-09 14:57:54

0

使用下面的代碼。

configuration.Save(ConfigurationSaveMode.Full, true); 
相關問題