配置部分未加载

本文关键字:加载 配置部 | 更新日期: 2023-09-27 18:20:30

我在web.config中声明了我的配置部分(在configSection元素中(:

<section name="gmailEmail" type="MyApp.Communication.Sections.GmailSection" allowLocation="true" allowDefinition="Everywhere" />

和用法:

<gmailEmail>
  <from emailAddress="pat.wasiewicz@gmail.com" name="MyApp"></from>
  <server password="mysuperpass">
</gmailEmail>

我的配置模型:

public class GmailSection : ConfigurationSection
{
    [ConfigurationProperty("server")]
    public ServerElement Server { get; set; }
    [ConfigurationProperty("from")]
    public FromElement From { get; set; }
}
public class ServerElement : ConfigurationElement
{

    [ConfigurationProperty("host", DefaultValue = "smtp.gmail.com", IsRequired = false)]
    public string Host { get; set; }
    [ConfigurationProperty("port", DefaultValue = 587, IsRequired = false)]
    public int Port { get; set; }
    [ConfigurationProperty("ssl", DefaultValue = true, IsRequired = false)]
    public bool Ssl { get; set; }
    [ConfigurationProperty("password", IsRequired = true)]
    public string Password { get; set; }
}
public class FromElement : ConfigurationElement
{
    [ConfigurationProperty("emailAddress", IsRequired = true)]
    public string EmailAddress { get; set; }
    [ConfigurationProperty("name", IsRequired = false)]
    public string Name { get; set; }
}

不幸的是,有一个问题:

var configSection = (GmailSection)ConfigurationManager.GetSection("gmailEmail");

configSection.ServernullconfigSection.Fromnull。为什么?

配置部分未加载

配置节的类型名称缺少程序集名称

<section name="gmailEmail" type="MyApp.Communication.Sections.GmailSection, MyApp" allowLocation=.....

服务器/密码元素缺少关闭标记 (/> (

<server password="mysuperpass" />

但我认为这些都是错别字。

应更改所有 { get; set; } 属性实现,以使用相同的键调用基类的索引器。我已经实现了GmailSection类,你可以用同样的方式修改ServerElement和FormElement类。

public class GmailSection : ConfigurationSection
{
    [ConfigurationProperty("server")]
    public ServerElement Server
    {
        get
        {
            return (ServerElement)this["server"];
        }
        set
        {
            this["server"] = value;
        }
    }
    [ConfigurationProperty("from")]
    public FromElement From
    {
        get
        {
            return (FromElement)this["from"];
        }
        set
        {
            this["from"] = value;
        }
    }
}