gpt4 book ai didi

asp.net-mvc - 不同 .config 文件上的 AppSettings 未更新

转载 作者:行者123 更新时间:2023-12-03 02:13:50 25 4
gpt4 key购买 nike

我正在尝试做与最近的 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 的 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 会发生什么?

关于asp.net-mvc - 不同 .config 文件上的 AppSettings 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1799413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com