我正在嘗試在最近的previous question上提及完全相同的事情。從本質上說,這裏的情況下(這正是我一樣的情況):不同的.config文件上的AppSettings不被更新
我的計劃是在他們自己的文件,這些(的appSettings) (的settings.config), ,我將在授予修改 權限到網絡處理用戶 帳戶,並在此文件中存儲所有可編輯的 設置(例如論壇 標題,說明等)。
的問題是,在這個問題接受了解決方案不適合我,因爲不是保存的appSettings在單獨的config文件,當我發出命令config.Save(ConfigurationSaveMode.Minimal, false)
,它複製了單獨的所有的appSettings文件導入主web.config文件的appSettings部分(使用新的更改)。這是我的最終代碼(在vb.net):
Public Shared Function GetAppSetting(ByVal setting As String) As String
Dim config As System.Configuration.Configuration = _
WebConfigurationManager.OpenWebConfiguration("~")
Return config.AppSettings.Settings(setting).Value
End Function
Public Shared Sub SetAppSetting(ByVal setting As String, ByVal value As String)
Dim config As System.Configuration.Configuration = _
WebConfigurationManager.OpenWebConfiguration("~")
config.AppSettings.Settings(setting).Value = value
config.Save(ConfigurationSaveMode.Minimal, False)
ConfigurationManager.RefreshSection("appSettings")
End Sub
基本上我看不到的地方我會說明我想要的設置保存在單獨的文件,而不是在這是在web.config它們默認存儲在哪裏。哦,順便說一下,我不得不在web.config的appSettings部分添加'file ='屬性,以便Settings.config appSettings會被實際考慮。沒有該屬性,上面的代碼不會讀取單獨的.config文件設置。這裏是我的web.config中appSettings部分的快照:
<appSettings file="Settings.config">
<add key="RestartApp" value="-1" />
</appSettings>
而且這裏是我的settings.config文件的全部內容:
<appSettings>
<add key="AppTitle" value="MVC Web Access" />
<add key="DefaultWebpage" />
<add key="CustomCSS" />
<add key="TktsEmailTo" value="[email protected]" />
<add key="EmailFrom" value="[email protected]" />
<add key="EmailFromSMTP" value="mail.email.com" />
<add key="EmailFromPW" value="fakePassword" />
</appSettings>
因此,而不是與修改後的設置結束了的我的Settings.config文件在.save命令後,web.config文件上的我的appSettings部分最終像這樣(並且Settings.config文件保持不變):
<appSettings file="Settings.config">
<add key="RestartApp" value="-1" />
<add key="AppTitle" value="New title" />
<add key="DefaultWebpage" value="index.aspx" />
<add key="CustomCSS" />
<add key="TktsEmailTo" value="[email protected]" />
<add key="EmailFrom" value="[email protected]" />
<add key="EmailFromSMTP" value="mail.email.com" />
<add key="EmailFromPW" value="NewFakePassword" />
</appSettings>
嗯,我會再看看我的代碼,看看我能否發現你正在做的任何差異... – 2009-11-25 20:20:28
Kurt - 實際上我的例子*是*使用單獨的.config文件,雙重檢查,它工作正常。 – 2009-11-25 20:29:47
我對前一個問題的回答主要集中在獲取已發佈的代碼 - 只處理web.config的代碼。我其實不確定你是否可以用一個單獨的配置文件來做到這一點......除非Keith實際上是這樣做的。 – 2009-11-25 20:30:47