首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mailSettings属性都返回<Null>

mailSettings属性都返回<Null>
EN

Stack Overflow用户
提问于 2013-01-29 12:18:46
回答 1查看 307关注 0票数 0

问题

获取_mailSettings.Smtp.Network.Host时,即使它在应用程序配置文件中,它还是返回null

代码

首先,因为该项目只是一个Class Library,所以我有以下构建后事件来构建正确命名的配置文件:

代码语言:javascript
复制
copy "$(ProjectDir)App.config" "$(TargetDir)ApplicationSupport.Email.dll.config"

接下来,我有一个类,用于加载配置并使其可用:

代码语言:javascript
复制
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;
        }
    }

    ...
}

我试着对它进行单元测试:

代码语言:javascript
复制
[TestMethod]
public void TestStartupSettings()
{
    var sut = new ApplicationSupport.Email.Startup();
    Assert.AreEqual("test.mail.com", sut.SmtpServer);
}

认为应该得到数据,因为我已经在应用程序配置文件中配置了它:

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-29 16:17:50

由于在ConfigurationManager中使用Class Library存在一些问题,所以我选择使用Project Properties中的Settings选项卡,因为这会生成一个app.config文件,例如,我可以简单地将这些数据复制和粘贴到运行中的应用程序的web.config中。

它还允许我轻松地对应用程序进行单元测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14582708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档