gpt4 book ai didi

C#-错误 : Collection is read-only

转载 作者:行者123 更新时间:2023-11-30 14:33:20 25 4
gpt4 key购买 nike

我正在尝试为管理和版主面板创建自定义设置系统,以更改站点名称、描述等内容。我现在使用的方法是 NameValueCollection 类,它允许我在我的 Web.Config 文件中获取我定义的键的值,以显示在适当的位置。我的问题是,当涉及到更改这些值时,我得到 Collection is read-only.....这是用于更新值和定义中列出的 ActionResult 的一小段我的配置。

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

NameValueCollection settings = new NameValueCollection();
settings = (NameValueCollection)ConfigurationManager.GetSection("settings");

settings.Set("siteName", SiteName);
settings.Set("siteDesc", SiteDesc);

return RedirectToAction("Index");

<section name="settings" type="System.Configuration.NameValueFileSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<settings>
<add key="siteName" value="Gizmo" />
<add key="siteDesc" value="Welcome to a Gizmo Powered Website." />
</settings>

一旦进入 settings.Set();这就是错误开始的地方。反正我有办法解决这个问题吗?喜欢在我的 Web.Config 中更新键和值的替代方法吗?

最佳答案

首先,您正在创建 NameValueCollection 的实例,然后立即重写它。其次你没有使用配置变量。第三,使用 NameValueCollection.Remove()Add() 方法。它应该可以解决问题...

请参阅以下示例(它与您想要执行的操作非常相似)

        Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
string key = "asd";
var origValue = config.AppSettings.Settings[key];
string newValue = origValue.Value + "changed";
config.AppSettings.Settings.Remove(key);
config.AppSettings.Settings.Add(key, newValue);

(是的 - 每次您重写 web.config 时,应用程序都会重新启动。)

关于C#-错误 : Collection is read-only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16700015/

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