[英]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.