加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在不更新的其他.config文件上的AppSettings

发布时间:2020-12-16 03:18:40 所属栏目:asp.Net 来源:网络整理
导读:我试图做最近 previous question上提到的完全相同的事情.实质上,这是情况(这是完全相同的情况): My plan is to have these (appSettings) in their own file (Settings.config), to which I will grant modify permissions to the web process user account
我试图做最近 previous question上提到的完全相同的事情.实质上,这是情况(这是完全相同的情况):

My plan is to have these (appSettings)
in their own file (Settings.config),
to which I will grant modify
permissions to the web process user
account,and store all editable
settings in this file (e.g. forum
title,description,etc).

问题是该问题中接受的解决方案对我不起作用,因为当我发出config.Save(ConfigurationSaveMode.Minimal,false)命令时,它不是将appSettings保存在单独的.config文件中,而是复制所有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中.哦,顺便说一句,我必须在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@email.com" />
    <add key="EmailFrom" value="email@email.com" />
    <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="newemail@email.com" />
    <add key="EmailFrom" value="newemail@email.com" />
    <add key="EmailFromSMTP" value="mail.email.com" />
    <add key="EmailFromPW" value="NewFakePassword" />
  </appSettings>

解决方法

只是仔细检查 – 我能看到的唯一区别是我正在使用

<appSettings configSource="Settings.config"/>

这是我现在使用的代码,它正在工作并将设置保存到我的单独设置文件(Settings.config):

var config = WebConfigurationManager.OpenWebConfiguration("~");

foreach (var key in collection.Keys)
{
    if (config.AppSettings.Settings[key.ToString()] != null)
    {
        config.AppSettings.Settings[key.ToString()].Value = collection[key.ToString()];
    }
}

config.Save(ConfigurationSaveMode.Minimal,false);
ConfigurationManager.RefreshSection("appSettings");

如果您在appSettings键上使用configSource会发生什么?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读