我们有两个Azure应用程序在一个中运行MVC网站,在另一个中运行连续的webjob。昨天中午突然开始在使用smtpclient发送电子邮件时发出以下错误。
根据验证程序
,远程证书无效
代码或邮件服务器中未进行任何更改。我们在2017年2月遇到了这个问题,然后没有解决方案(https://social.msdn.microsoft.com/Forums/en-US/f2f35ab9-3d0a-490f-b639-8ea5abda92d5/intermittent-the-remote-certificate-is-invalid-according-to-the-validation-procedure?forum=windowsazurewebsitespreview),并且在2016年9月左右又出现了同样的问题。
相同的代码在本地发送电子邮件,它也适用于我们的一个虚拟机。
using (var smtp = new SmtpClient("mail.server.com", 25))
{
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential(username, password);
smtp.Send(message);
}
尝试https://twitter.com/AzureSupport,但他们没有回复。我们没有Azure支持计划,但为什么我们必须支付我们没有中断的事情或等待8小时甚至1小时的任何业务的关键部分,例如发送电子邮件?
我们已经开始将大部分网络应用程序推广到Azure,但我们一直将它们移回服务器,因为这是一个接一个的问题......这两个Azure应用程序是最后一个,现在只剩下一个因为它使用webjobs,代码依赖于webjob。
更新: Azure应用和邮件服务器中的两个证书指纹匹配。
答案 0 :(得分:0)
错误消息表示您的应用程序已确定远程证书无效。这可能是由于机器没有必要的认证链接。您可能已经知道此异常的原因。
我们已经看到在某些所谓的锁定环境中发生此错误。即,应用了一些组策略或域设置,这将删除所有证书并有选择地添加必要的"公司批准的"证书。在此过程中,与认证相关的呼叫可能会失败。
一个"解决方法",是拥有自己的认证回调处理程序并忽略认证错误。从安全角度来看,这是非常糟糕!但是,通常用于逃避证书错误!
一种方法是使用全局认证回调: ServerCertificateValidationCallback