簡體   English   中英

無法在C#的控制台應用程序中讀取配置文件

[英]Unable to read from config file in console app in c#

我正在嘗試從Visual Studio 2012中的項目中的app.config文件讀取兩個變量。但是,我得到一個例外:“配置系統初始化失敗”。 有什么主意在這里嗎?

這是我的app.config文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <configurationSections>
    <section name ="connectionConfig" type="ConnectionManager.MyConnectionConfigurationSection"
             />
  </configurationSections>
  <connectionConfig  portNumber="7777"/>
  <connectionConfig  hostName="localhost" />
</configuration>

C#文件:

          namespace ConnectionManager
            {
                public class MyConnectionConfigurationSection : System.Configuration.ConfigurationSection
                {
                    [ConfigurationProperty("portNumber")]
                    public string PortNumber
                    {
                        get
                        {
                            return (string)this["portNumber"];
                        }
                    set
                    {
                        this["portNumber"] = value;
                    }
                }

                [ConfigurationProperty("hostName")]
                public string HostName
                {
                    get
                    {
                        return (string)this["hostName"];
                    }
                    set
                    {
                        this["hostName"] = value;
                    }
                }
            }

            public static class ConnectionApplication
            {
                public static MyConnectionConfigurationSection Config { get; internal set; }

                public static void Initialize()
                {
                    try
                    {
                        Config = ConfigurationManager.GetSection("connectionConfig") as MyConnectionConfigurationSection ;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message.ToString());
                    }

                }

            }
    class Program
        {
            static string portNumber;
            static string hostName;
            static void Main(string[] args)
            {
                ConnectionApplication.Initialize();

                portNumber=ConnectionApplication.Config.PortNumber;
                Console.WriteLine(portNumber);

                hostName = ConnectionApplication.Config.HostName;
                Console.WriteLine(hostName);

            }
        }
}

似乎它不能僅初始化...當我轉儲異常時,異常顯示:配置系統無法初始化。 任何建議我在做什么錯

再次檢查您的代碼:

  <configurationSections>
    <section name ="connectionConfig" type="ConnectionManager.MyConnectionConfigurationSection"
             />
  </configurationSections>
  <connectionConfig  portNumber="7777"/>
  <connectionConfig  hostName="localhost" />
  • 這是<configSections>
  • 為什么要對自定義部分聲明兩次? <connectionConfig portNumber="7777" hostName="localhost" />是使用自定義部分的正確方法。
  • type屬性上的<section name ="connectionConfig" type="ConnectionManager.MyConnectionConfigurationSection" />應該提供該類的完整程序集限定名稱。 也就是說,如果您的程序集名為ConnectionManager ,則應該配置ConnectionManager.MyConnectionConfigurationSection, ConnectionManager

順便說一句,在我看來,如果您要配置2個簡單的設置,那么我不會使用自定義配置部分(這是一個過大的選擇)。 您為什么不只使用.NET配置模型中內置的appSettings

<appSettings>
     <add key="connectionManager:host" value="localhost" />
     <add key="connectionManager:port" value="7777" />
</appSettings>

您將通過以下方式訪問這些參數:

string host ConfigurationManager.AppSettings["connectionManager:host"];
int port = int.Parse(ConfigurationManager.AppSettings["connectionManager:port"]);

檢查您的配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <configurationSections>
        <section name ="connectionConfig" type="ConnectionManager.MyConnectionConfigurationSection"/>
    </configurationSections>
    <connectionConfig  portNumber="7777"/>
    <connectionConfig  hostName="localhost" />
</configuration>

包含端口號和主機名的部分不在您的代碼閱讀范圍內。

像這樣嘗試:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <configurationSections>
        <section name ="connectionConfig" type="ConnectionManager.MyConnectionConfigurationSection">        
          <connectionConfig  portNumber="7777"/>
          <connectionConfig  hostName="localhost" />
        </section>
    </configurationSections>
</configuration>

暫無
暫無

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

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