簡體   English   中英

C# - 錯誤:集合是只讀的

[英]C# - Error: Collection is read-only

我正在嘗試為管理和主持人面板創建自定義設置系統,以更改網站名稱,描述等內容。 我現在使用的方法是NameValueCollection類,它允許我在我的Web.Config文件中獲取我定義的鍵的值,以顯示在適當的位置。 我的問題是,當歸結為改變這些值時,我得到的集合是只讀的。 ....在使用更新我的配置中列出的值和定義時,有一小部分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時,應用程序都會重新啟動。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM