在AppSetting中存储SMTP属性

时间:2015-03-06 14:17:51

标签: azure-web-sites

我正在使用Azure网站,其中门户网站可用于覆盖web.config的AppSetting和ConnectionString部分中的值。但是其他部分仍然需要对web.config进行转换或硬编码。我需要对/configuration/system.net/mailSettings/smtp上找到的值应用相同的控制

理想情况下,我想将一个字符串存储在AppSetting值中,然后,当网站启动时,它会解析此字符串并使用AppSettings中找到的已解析值覆盖我的SMTP部分的初始内容。

大图目标:消除对web.config的硬编码smtp值的依赖,而是从门户网站的AppSettings列表中应用这些值。可能的?

THX

1 个答案:

答案 0 :(得分:1)

我不太熟悉System.Net.Mail,但您可以随时阅读并初始化自己的配置。您可以在门户网站中设置以下AppSettings

smtp.host = <hostName>
smtp.port = <port>
smtp.userName = <userName>
smtp.password = <password>
smtp.defaultCredentials = <true | false>

然后在你的代码中有类似的东西。

public SmtpClient GetSmtpClient()
{
    Func<string, string> config = s => ConfigurationManager.AppSettings[s] ?? System.Environment.GetEnvironmentVariable(s);
    return new SmtpClient
    {
        Host = config("smtp.host"),
        Port = int.Parse(config("smtp.port")), // handle parsing errors
        Credentials = new NetworkCredential(config("smtp.userName"), config("smtp.userName")),
        UseDefaultCredentials = bool.Parse(config("smtp.defaultCredentials")), //handle parsing errors
    };
}

然后在本地调试时,您可以依赖环境变量,在部署到Azure时,您可以使用AppSettings。