[英]ConfigurationSection ConfigurationManager.GetSection() always returns null
[英]ConfigurationManager.GetSection always gives object with default values
這是ConfigurationSection類
using System.Configuration;
namespace CampusWebStore.Config
{
public class PoolerConfig : ConfigurationSection
{
[ConfigurationProperty("PoolId", IsRequired = true)]
public string PoolId { get; set; }
[ConfigurationProperty("Host", IsRequired = true)]
public string Host { get; set; }
[ConfigurationProperty("Port", IsRequired = true)]
public int Port { get; set; }
[ConfigurationProperty("Enabled", IsRequired = true)]
public bool Enabled { get; set; }
}
}
web.config節定義
<section name="PoolerConfig" type="CampusWebStore.Config.PoolerConfig, CampusWebStore"/>
實際部分
<PoolerConfig
PoolId="asdf-asdf-asdf-asdf"
Host="localhost"
Port="5000"
Enabled="true"
/>
然后是加載它的行(在Global.asax.cs中)
PoolerConfig poolerConfig = ConfigurationManager.GetSection("PoolerConfig") as PoolerConfig;
看來,不管我做什么,PoolerConfig中的所有屬性都是默認值(空字符串,0個整數等)。 研究表明,這應該很容易做到,但無濟於事,我無法弄清楚。
您不能將get/set
支持者用於配置屬性。 您必須訪問基類以操縱屬性。 有關示例,請參見http://msdn.microsoft.com/zh-cn/library/2tw134k3(v=vs.100).aspx 。
更改:
[ConfigurationProperty("PoolId", IsRequired = true)]
public string PoolId { get; set; }
至:
[ConfigurationProperty("PoolId", IsRequired = true)]
public string PoolId
{
get { return (string)this["PoolID"]; }
set { this["PoolID"] = value; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.