我正在尝试做与最近提到的完全相同的事情上一个问题。本质上,情况是这样的(这与我的情况完全相同):
我的计划是拥有这些(appSettings)
在他们自己的文件(Settings.config)中,
我将授予修改权
Web进程用户的权限
帐户,并存储所有可编辑的
该文件中的设置(例如论坛
标题、描述等)。
问题是该问题中接受的解决方案对我不起作用,因为当我发出以下命令时,不是将 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>
因此,在 .save 命令之后,我的 Settings.config 文件中的设置不会被修改,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>