簡體   English   中英

App.Config 中的自定義部分,ConfigurationManager 停止工作

[英]Custom section in App.Config, ConfigurationManager stops working

我在 C# 中創建了一個控制台應用程序,它從 App.config 讀取信息。 如果我在 appSettings 部分添加內容,我可以訪問它們並且它可以工作,但是一旦我添加了一些自定義部分,我就無法從中讀取任何內容。 我正在使用 ConfigurationManager,我有它的參考。 我的應用程序配置如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<appSettings>
    <add key="overwriteBackupFiles" value="False"/>
    <add key="path" value="c:\temp"/>
</appSettings>
<ImageFormatsINeed>
  <add key="type1" value="width=180&#38;height=180"></add>
  <add key="type2" value="width=220&#38;height=220"></add>
  <add key="type3" value="width=500&#38;height=500"></add>
</ImageFormatsINeed>
</configuration>

我正在嘗試訪問這些信息:

string path = ConfigurationManager.AppSettings["path"];

var settings = ConfigurationManager.GetSection("ImageFormatsINeed");

當我沒有ImageFormatsINeed部分時,我可以從 AppSettings 獲取路徑並且它正在工作。 但是一旦我添加了我的ImageFormatsINeed部分,一切都會停止工作。

現在我的問題是如何在 app.config 中添加自定義部分使其起作用,或者我應該從一些自定義 xml 文件或配置文件中讀取我的 ImageInformation 嗎?

您必須在 app.config 的頂部使用標簽 < configSections >,對於這種情況,您應該使用類型AppSettingsSection

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <configSections>
        <section  name="ImageFormatsINeed" type="System.Configuration.AppSettingsSection" />
    </configSections>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>        
    <appSettings>
        <add key="overwriteBackupFiles" value="False"/>
        <add key="path" value="c:\temp"/>
    </appSettings>
    <ImageFormatsINeed>
      <add key="type1" value="width=180&#38;height=180"></add>
      <add key="type2" value="width=220&#38;height=220"></add>
      <add key="type3" value="width=500&#38;height=500"></add>
    </ImageFormatsINeed>
    </configuration>

然后在你的 C# 代碼中:

NameValueCollection settings_section = ConfigurationManager.GetSection("ImageFormatsINeed") as NameValueCollection;
Console.WriteLine(settings_section["type1"]);

暫無
暫無

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

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