ConfigurationManager.GetSection всегда дает объект со значениями по умолчанию
Вот класс 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 целых и т. Д.). Исследования показывают, что это должно быть легко, как пирог, но безрезультатно, я не могу понять это.
1 ответ
Решение
Вы не можете использовать get/set
покровители для свойств конфигурации. Вы должны получить доступ к базовому классу, чтобы манипулировать свойствами. См. Пример http://msdn.microsoft.com/en-us/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; }
}