簡體   English   中英

更新配置文件

[英]Update config file

我在使用C#更新VS2013中的ConfigFile時遇到問題。 我有以下代碼:

Configuration configManager = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationCollection confCollection = configManager.AppSettings.Settings;

confCollection["ID_Uzivatele"].Value = ID_Uzivatele;

configManager.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configManager.AppSettings.SectionInformation.Name); 

(ID_Uzivatele是一個字符串變量)

和configFile

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="ID_Uzivatele" value="default"/>
  </appSettings>
</configuration>

我的問題是(錯誤列表):KomunikacniAplikace.exe中發生了類型為'System.NullReferenceException'的未處理異常

有人知道我在做什么錯嗎?

我建議您查看未設置該設置的錯誤情況:這對我有用:

(假設字符串有一個常量,這樣您就不會出現錯字...)

const string ID_UZIVATELE = "ID_Uzivatele";

主要代碼:

    Configuration configManager = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    KeyValueConfigurationCollection confCollection = configManager.AppSettings.Settings;

    if (confCollection.AllKeys.Contains(ID_UZIVATELE)) {
        Console.Out.WriteLine("Contains key, modifying : was " + confCollection["ID_Uzivatele"].Value);
        confCollection["ID_Uzivatele"].Value = "foo";

    } else {
        Console.Out.WriteLine("Doesn't contain key, adding");
        confCollection.Add(ID_UZIVATELE, "Boom");
    }

    configManager.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection(configManager.AppSettings.SectionInformation.Name);

如果缺少配置文件,則會生成該文件(您可能希望檢查您的App.Config是否確實已復制到輸出文件夾中(這可能是導致錯誤的根本原因),但始終可以針對不良的配置進行保護很有幫助。

暫無
暫無

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

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