【问题标题】:Storing SMTP outside the Web.Config File将 SMTP 存储在 Web.Config 文件之外
【发布时间】:2010-10-22 17:03:06
【问题描述】:

一段时间以来,我一直将我的连接和应用程序设置存储在一个外部文件中,并且只是通过我的 web.config 引用该文件。这非常有效,因为它允许我保留单独的连接字符串和应用程序设置。这真的很方便,因为我发现在开发过程中我经常会对 webconfig 进行许多更改,并且我讨厌每次需要更新 web.config 时都必须管理特定于环境的值。

无论如何我可以通过 web.config 中的 SMTP 配置部分来实现这一点。

【问题讨论】:

    标签: asp.net smtp web-config


    【解决方案1】:

    当然,您可以使用 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 节点才能正常工作,所以我更新了上面的代码以表明 - 同样的想法,只有这个应该工作。 :)

    【讨论】:

    • 酷!我不知道你能做到这一点!
    • 这是我希望早点知道的 ASP.NET 功能之一!
    • 啊,我之前尝试过这个,只是忘记把它放在 system.net 节点中......哎呀......谢谢你的提醒。
    • 是的,奇怪的是你怎么不能配置 mailsettings 元素。不过有一条评论 - 我现在会使用 smtp.config 而不是 mainsettings.config,以避免混淆(您要断开 smtp 节点,而不是 mainsettings 节点)。
    • MailSettings.config 文件还需要用 包裹 节点。
    【解决方案2】:

    我不确定我这里的内容是否仅适用于较新版本的 .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>
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 为什么网络应用程序会将其存储在注册表中?
      • 因为我们除了web之外还有其他的remoting方法。
      • 我建议不要使用注册表
      • 天哪。如何将其存储在注册表中并由预先提供的程序进行配置,以便我们可以预期非技术用户实际上对需要完全信任的应用程序执行它的安全性较低?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 2013-08-10
      • 2015-12-07
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多