配置部分未加载
本文关键字:加载 配置部 | 更新日期: 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.Server
是null
,configSection.From
是null
。为什么?
配置节的类型名称缺少程序集名称
<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;
}
}
}