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