Rod*_* G. 5 asp.net-mvc configuration-files
我正在尝试做与上一个问题相同的事情.从本质上讲,就是这种情况(这与我的情况完全相同):
我的计划是将这些(appSettings)放在他们自己的文件(Settings.config)中,我将向其提供对Web进程用户帐户的修改权限,并将所有可编辑设置存储在此文件中(例如论坛标题,说明等) .
问题是该问题中接受的解决方案对我不起作用,因为在我发出config.Save(ConfigurationSaveMode.Minimal, false)命令时,它不是将appSettings保存在单独的.config文件中,而是将单独文件的所有appSettings复制到appSettings部分.主web.config文件(带有新的更改).这是我的最终代码(在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
Run Code Online (Sandbox Code Playgroud)
基本上我无法看到我在哪里表示我希望将设置保存在单独的文件而不是web.config上,默认情况下它们存储在web.config中.哦,顺便说一句,我必须在web.config的appSettings部分添加'file ='属性,以便实际考虑Settings.config appSettings.如果没有该属性,上面的代码不会读取单独的.config文件设置.这是我的web.config appSettings部分的快照:
<appSettings file="Settings.config">
<add key="RestartApp" value="-1" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
这是我的Settings.config文件的全部内容:
<appSettings>
<add key="AppTitle" value="MVC Web Access" />
<add key="DefaultWebpage" />
<add key="CustomCSS" />
<add key="TktsEmailTo" value="email@email.com" />
<add key="EmailFrom" value="email@email.com" />
<add key="EmailFromSMTP" value="mail.email.com" />
<add key="EmailFromPW" value="fakePassword" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
因此,在.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="newemail@email.com" />
<add key="EmailFrom" value="newemail@email.com" />
<add key="EmailFromSMTP" value="mail.email.com" />
<add key="EmailFromPW" value="NewFakePassword" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
只是仔细检查 - 我能看到的唯一区别是我正在使用
<appSettings configSource="设置.config"/>
这是我现在使用的代码,它正在工作并将设置保存到我单独的设置文件(Settings.config)中:
var config = WebConfigurationManager.OpenWebConfiguration("~");
foreach(集合中的 var 键。Keys)
{
if (config.AppSettings.Settings[key.ToString()] != null)
{
config.AppSettings.Settings[key.ToString()].Value = 集合[key.ToString()];
}
}
config.Save(ConfigurationSaveMode.Minimal, false);
ConfigurationManager.RefreshSection(“appSettings”);
configSource如果你使用你的钥匙会发生什么appSettings?
| 归档时间: |
|
| 查看次数: |
4997 次 |
| 最近记录: |