• 解决Error"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系


    今天写程序的时候调用到一个第三方的DLL文件,本机调试一切都正常,但是程序不是到服务器以后一直提示一个BUG:"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系"。 
    后来把DLL文件进行反编译,发现是在获得请求的时候出错了。 

    引用
    WebResponse response = WebRequest.Create("https://……").GetResponse(); 

    于是在服务器上用浏览器打开上面的地址,发现会弹出一个确认证书的窗口,看来是证书问题。 
    在网上一顿搜索,发现了一个决绝办法甚是好用,而且很简单,在请求之前添加一行代码。 

    ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();  
    internal class AcceptAllCertificatePolicy : ICertificatePolicy
        {
            public AcceptAllCertificatePolicy()
            {
            }
    
            public bool CheckValidationResult(ServicePoint sPoint,
               X509Certificate cert, WebRequest wRequest, int certProb)
            {
                // Always accept
                return true;
            }
        }

    以上方法虽然解决了遇到的问题,可是在VS中会提示ServicePointManager.CertificatePolicy已经被否决。于是按照提示使用新的方法来处理。 
    改造后的代码更加简洁和明了

    ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
    private bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }

    就这样一个委托搞定!

     

  • 相关阅读:
    NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(3)
    zend studio快捷键
    Guid的生成和数据修整(去除空格和小写字符)
    工作中常用Windows快捷键整理(1)-快速关闭网页
    PHP学习笔记(3)-Zend Studio安装和汉化
    PHP学习笔记(2)
    PHP学习笔记(1)
    判断本机ip是电信还是网通
    作业 4/1
    logging 模块
  • 原文地址:https://www.cnblogs.com/kennyliu/p/3782684.html
Copyright © 2020-2023  润新知