1

我有一个在亚马逊云服务器上运行的 WCF 服务。有时在某些客户端上——它们是每 5 分钟轮询一次服务的长时间运行的进程——会发生以下异常:

System.ServiceModel.Security.SecurityNegotiationException:无法为具有权限“myservicehost.com”的 SSL/TLS 安全通道建立信任关系。---> System.Net.WebException:底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。---> System.Security.Authentication.AuthenticationException:根据验证程序,远程证书无效。

看起来 SSL 证书有问题,但我找不到原因。该证书由 DigiCert 颁发。

奇怪的是,总是在客户端启动时,WCF 调用成功。然后,正如我所写的,每 5 分钟重复一次通话。这工作正常,直到 30 分钟到 8 小时之间的某个时间过去。从那时起,它不再起作用,并且每次后续调用都会发生上述异常。然后这种状态可以保持几天。

在极少数情况下,在 2/3 天后,它会在短时间内再次运行,然后异常再次出现。

当我重新启动客户端进程时,它会再次出现一段时间,直到上述问题一遍又一遍地开始。

SO上有很多带有这个标题的消息,但我没有找到任何与我的特殊问题相关的消息。在大多数其他情况下,异常总是发生而不是不定期发生。那么任何人都可以帮助或尝试指出我的方向吗?

4

1 回答 1

0

终于在研究了很久之后,找到了解决办法。在我们软件的同一进程中,另一个模块同时运行,它发出 FTP 请求,其中包含以下代码:

ServicePointManager.ServerCertificateValidationCallback =
    new RemoteCertificateValidationCallback( myCertificateValidation );

myCertificateValidation是一个执行自定义验证的回调方法。不幸的是,就我而言,它总是返回false。这导致了上述异常。因为 FTP 模块没有一直运行,所以错误很难找到。

于 2012-11-26T16:34:38.950 回答