码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-06-12 07:10:38      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   http   

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

引用
bubuko.com,布布扣
WebResponse response = WebRequest.Create("https://……").GetResponse(); 
bubuko.com,布布扣

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

bubuko.com,布布扣
ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();  
bubuko.com,布布扣
bubuko.com,布布扣
internal class AcceptAllCertificatePolicy : ICertificatePolicy
    {
        public AcceptAllCertificatePolicy()
        {
        }

        public bool CheckValidationResult(ServicePoint sPoint,
           X509Certificate cert, WebRequest wRequest, int certProb)
        {
            // Always accept
            return true;
        }
    }
bubuko.com,布布扣

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

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

就这样一个委托搞定!

 

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

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

标签:style   class   blog   code   java   http   

原文地址:http://www.cnblogs.com/kennyliu/p/3782684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!