问题
获取_mailSettings.Smtp.Network.Host时,即使它在应用程序配置文件中,它还是返回null。
代码
首先,因为该项目只是一个Class Library,所以我有以下构建后事件来构建正确命名的配置文件:
copy "$(ProjectDir)App.config" "$(TargetDir)ApplicationSupport.Email.dll.config"接下来,我有一个类,用于加载配置并使其可用:
public class Startup
{
SmtpSection _smtpSection = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;
public string SmtpServer
{
get
{
if (_smtpSection == null) { return string.Empty; }
return _smtpSection.Network.Host;
}
}
...
}我试着对它进行单元测试:
[TestMethod]
public void TestStartupSettings()
{
var sut = new ApplicationSupport.Email.Startup();
Assert.AreEqual("test.mail.com", sut.SmtpServer);
}我认为应该得到数据,因为我已经在应用程序配置文件中配置了它:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<mailSettings>
<smtp from="somebody@test.com">
<network host="test.mail.com" defaultCredentials="true" port="25"/>
</smtp>
</mailSettings>
</system.net>
</configuration>发布于 2013-01-29 16:17:50
由于在ConfigurationManager中使用Class Library存在一些问题,所以我选择使用Project Properties中的Settings选项卡,因为这会生成一个app.config文件,例如,我可以简单地将这些数据复制和粘贴到运行中的应用程序的web.config中。
它还允许我轻松地对应用程序进行单元测试。
https://stackoverflow.com/questions/14582708
复制相似问题