在Web.Config文件外部存储SMTP
-
03-07-2019 - |
题
一段时间以来,我一直将我的连接和应用程序设置存储在外部文件中,只是通过我的web.config引用该文件。这非常有效,因为它允许我保持单独的连接字符串和应用程序设置。这非常方便,因为我发现在开发期间我经常会对webconfig进行很多更改,而且我不想每次需要更新web.config时都必须管理特定于环境的值。
无论如何,我可以通过web.config中的SMTP配置部分来实现这一点。
解决方案
当然,您可以使用configSource属性。
示例:
<system.net>
<mailSettings>
<smtp configSource="MailSettings.config"/>
</mailSettings>
</system.net>
然后将mailSettings配置数据放入MailSettings.config
那么你的MailSettings.config文件会有类似的东西:
<network
host="relayServerHostname"
port="portNumber"
userName="username"
password="password" />
更新:看起来它可能需要实际进入smtp节点才能正常工作,所以我更新了上面的代码来表明 - 同样的想法,只有这个应该有用。 :)
其他提示
我不确定我这里的内容是否仅适用于较新版本的.NET。我使用接受的答案得到了运行时错误。
如果使用较新版本的.NET,请使用下面的代码块更新接受的答案。 smtp节点也应该位于单独的文件中 - 而不仅仅是网络节点。实际的Web.config文件中的整个smtp节点将被您放在那里的文件替换 - 不像appSettings似乎添加到它。
Web.config -
<system.net>
<mailSettings>
<smtp configSource="your-source-file">
</smtp>
</mailSettings>
</system.net>
您的档案 -
<smtp from="noreply@example.com">
<network
host="your-host"
port="your-port"
userName="your-user-name"
password="your-password"/>
</smtp>
我的软件将其存储在注册表中,即使是在生产中也是如此。
不隶属于 StackOverflow