ASP.NET Webform如何在web.config的mailSettings中配置TLS 1.2
你没法直接在<mailSettings>节点中配置TLS版本,该节点没有提供对应的属性,需要通过全局.NET运行时配置让内置的SMTP客户端默认使用TLS 1.1/1.2,无需修改原有邮件配置,具体方案根据你使用的.NET Framework版本选择即可:
方案1:适用于.NET Framework 4.7.1及以上版本
直接在web.config的<configuration>根节点下添加如下配置,会让程序默认使用操作系统支持的最高TLS版本,自动兼容TLS 1.1/1.2:
<runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false" /> </runtime>
方案2:适用于.NET Framework 4.7、4.6版本
直接在<system.web>节点下修改httpRuntime的目标框架配置即可:
<system.web> <httpRuntime targetFramework="4.6" /> </system.web>
方案3:适用于.NET Framework 4.5版本
在web.config的<configuration>根节点下添加<system.net>配置,直接指定ServicePointManager全局使用的TLS版本:
<system.net> <settings> <servicePointManager securityProtocol="Tls12,Tls11,Tls" /> </settings> </system.net>
验证说明
原有<mailSettings>节点的内容不需要做任何修改,添加上述配置后重启站点,密码重置功能调用内置SMTP客户端发信时会自动遵循TLS版本规则,不会再触发TLS 1.0的报错。
如果你的项目使用的.NET Framework版本低于4.5,无法通过上述配置实现需求,需要先升级.NET Framework版本,或者在全局应用启动事件(如Global.asax的Application_Start方法)中添加你提到的SecurityProtocol赋值代码。
内容的提问来源于stack exchange,提问作者Learning
相关产品推荐
相关产品推荐

