今天写程序的时候调用到一个第三方的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;
}

就这样一个委托搞定!

最新文章

  1. C/S架构和B/S架构的概念和区别
  2. 主机巡检脚本:OSWatcher.sh
  3. http - referer
  4. win7---远程桌面相关的服务
  5. android 实现桌面显示内容
  6. sublime text3的一些小技巧记录(配gif图)
  7. 查看linux虚拟机ssh服务是否开启
  8. 通过本地加载ga.js文件提高Google Anlytics性能
  9. Java——(二)Java集合容器
  10. java中最常用jar包的用途说明
  11. Android简易实战教程--第二十五话《网络图片查看器》
  12. sublime实现markdown浏览器预览
  13. java:tomcat(负载均衡)nginx的应用配置
  14. 7步快速解决SQLServer数据库(2008版)重装问题
  15. Bloom Filter 数据结构去重
  16. linux /dev/null 中有数据
  17. Consul集群搭建
  18. JavaScript 变量提升
  19. linux下时间同步的两种方法分享
  20. DZY Loves Math系列

热门文章

  1. U3D Buildin shader
  2. 51nod 1831 小C的游戏
  3. 洛谷P3172 [CQOI2015]选数(容斥)
  4. iphone6 iphone6 plus 放大显示模式高分辨率模式问题
  5. 笔记-JavaWeb学习之旅17
  6. css 样式计算器
  7. [Java]Vector源码分析
  8. 几款常用的高质量web前端框架
  9. (转)Module ngx_http_fastcgi_module
  10. 洛谷 P1969 积木大赛