在 AppSetting 中存储 SMTP 属性
Storing a SMTP property in AppSetting
我正在处理 Azure 网站,其中门户可用于覆盖 web.config 的 AppSetting 和 ConnectionString 部分中的值。但是其他部分仍然需要 web.config 的转换或硬编码。我需要对在 /configuration/system.net/mailSettings/smtp
处找到的值应用相同的控制
理想情况下,我想在 AppSetting 值中存储一个字符串,然后,当站点启动时,它会解析该字符串并使用在 AppSettings 中找到的已解析值覆盖我的 SMTP 部分的初始内容。
大局objective:消除对 web.config 的硬编码 smtp 值的依赖,而是从门户的 AppSettings 列表中应用这些值。可能吗?
感谢
我不太熟悉 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。
我正在处理 Azure 网站,其中门户可用于覆盖 web.config 的 AppSetting 和 ConnectionString 部分中的值。但是其他部分仍然需要 web.config 的转换或硬编码。我需要对在 /configuration/system.net/mailSettings/smtp
处找到的值应用相同的控制理想情况下,我想在 AppSetting 值中存储一个字符串,然后,当站点启动时,它会解析该字符串并使用在 AppSettings 中找到的已解析值覆盖我的 SMTP 部分的初始内容。
大局objective:消除对 web.config 的硬编码 smtp 值的依赖,而是从门户的 AppSettings 列表中应用这些值。可能吗?
感谢
我不太熟悉 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。