【问题标题】:C# - Error: Collection is read-onlyC# - 错误:集合是只读的
【发布时间】:2013-05-17 23:48:04
【问题描述】:

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

    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 中更新键和值的替代方法吗?

【问题讨论】:

  • 在你的例子中我看不到你在哪里使用你的config,所以你可以从这个例子中删除它
  • 您是否尝试更改运行代码的同一站点的 web.config?
  • this post。你可以从中得到一些想法。
  • 更改您自己的 web.congig 将使您的应用重新启动:stackoverflow.com/questions/613824/…
  • @giacomelli,如果是这样,有没有办法我可以制作一些自定义配置文件,如 Web.config 来做需要的事情??

标签: c# asp.net-mvc


【解决方案1】:

首先,您正在创建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 时,应用程序都会重新启动。)

【讨论】:

  • 那么 asp 应该是 ?
  • 是的,我的测试 web.config 看起来像这样:
  • 谢谢大佬少校谢谢!!!!!!但是看看这个,我正在从事网络技术项目,如果你愿意加入 id 可以使用!
  • 我很高兴能帮上忙 :) 感谢您的提议,但我想我现在太忙了。您听说过 Kentico CMS 吗?它可以为您节省大量开发 Web 解决方案的时间。 ;)
  • 没有问题,我理解,实际上我没有:o!我想我现在就去看看!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
相关资源
最近更新 更多