一段时间以来,我一直将我的连接和应用程序设置存储在外部文件中,只是通过我的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>

我的软件将其存储在注册表中,即使是在生产中也是如此。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top