SmtpClient和app.config system.net配置

11

我正在开发一个发送电子邮件的.NET 3.5库,遇到了一个问题。 我把system.net配置放进了app.config中:


<system.net>
  <mailSettings>
    <smtp from="mail@domain.com">
      <network host="myserver.com" port="25" defaultCredentials="true" />
    </smtp>
  </mailSettings>
</system.net>

我实例化了没有参数的SmtpClient:

SmtpClient client = new SmtpClient();
但是配置未被读取(我正在尝试使用NUnit测试库),我收到一个 System.InvalidOperationException 异常,因为配置未被读取,从而主机为空。配置不应该自动读取吗?

1
2年前我遇到了类似的问题:http://stackoverflow.com/questions/737946/net-configuration-section-designer-where-is-my-collection/738501#738501 - John Rasch
谢谢John。我刚刚得出了同样的结论... ;) 我肯定应该多想一下! - mamoo
2个回答

14

请确保将配置块(如上所示)添加到{appName}.exe.config或web.config中——类库的配置会在运行时从这些文件之一中获取,而不是从类库的app.config中获取。


谢谢你的回答,Davide。这是一个类库,我正在尝试使用NUnit进行测试(这有什么区别吗?),无论如何,该部分在.config文件中存在,所以我还是卡住了... - mamoo
您十分受欢迎,几周前我也对同样的问题给出了类似的答案,这是一个常见的错误,我自己以前也犯过 :) - Davide Piras

0

我刚意识到我肯定是在错误的方式下操作(John也有一篇类似的帖子详见,解决方案就在那里...)。

mailsettings仅在应用程序级别可用,因此测试项目应了解您的设置以考虑它们。

感谢JohnDavide指引我朝正确的方向前进!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接