今天写程序的时候调用到一个第三方的DLL文件,本机调试一切都正常,但是程序不是到服务器以后一直提示一个BUG:"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系"。
后来把DLL文件进行反编译,发现是在获得请求的时候出错了。
引用
WebResponse response = WebRequest.Create("https://……").GetResponse();
定义一个类,来对远程X.509证书的验证,进行处理,返回为true.我们要自己定义一个类,然后在客户单调用WCF服务之前,执行一次即可。代码如下:
public
static
class
Util
{
///
<summary>
///
Sets the cert policy.
///
</summary>
public
static
void
SetCertificatePolicy()
{
ServicePointManager.ServerCertificateValidationCallback
+=
RemoteCertificateValidate;
}
///
<summary>
///
Remotes the certificate validate.
///
</summary>
private
static
bool
RemoteCertificateValidate(
object
sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors error)
{
//
trust any certificate!!!
System.Console.WriteLine(
"
Warning, trust any certificate
"
);
return
true
;
}
}
你要在WebRequest.Create("https://……").GetResponse();调用操作点前先调用这个方法: Util.SetCertificatePolicy();