簡體   English   中英

ConfigurationManager.GetSection始終為對象提供默認值

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

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