.NET Core 使用 HttpClient SSL 请求出错的解决办法
问题
使用 HTTP Client 请求 HTTPS 的 API 时出现 The certificate cannot be verified up to a trusted certification authority
异常,并且证书已经传入。
下面就是问题代码:
public class Program{public static void Main(string[] args){var url = @"https://xxx.xxx.xxx.xxx:xxxx/xxx-web/services/xxxx?wsdl";
var handler = new HttpClientHandler { ClientCertificateOptions = ClientCertificateOption.Manual, ClientCertificates = {new X509Certificate2(@"E:\cert\rootTrust.cer","11111111"),new X509Certificate2(@"E:\cert\middleTrust.cer","11111111"),new X509Certificate2(@"E:\cert\wskey.pfx","ws654321") } };
var webRequest = new HttpClient(handler);var result = webRequest.GetStringAsync(url).GetAwaiter().GetResult(); Console.WriteLine(result); }}
原因
因为在发出 HTTPS 请求的时候,HttpClient
都会检查 SSL 证书是否合法。如果不合法的话,就会导致抛出异常信息,而对方给出的证书是自签发的测试接口的证书,所以不是一个合法的 SSL 证书。
解决
在 HttpClientHandler
当中会有一个 ServerCertificateCustomValidationCallback
事件,该事件用于判定证书验证是否通过。我们可以挂接该事件,然后逻辑编写为直接返回 true
结果,这样就会忽略掉证书异常的情况。
最新的代码如下:
public class Program{public static void Main(string[] args){var url = @"https://xxx.xxx.xxx.xxx:xxxx/xxx-web/services/xxxx?wsdl";
var handler = new HttpClientHandler { ServerCertificateCustomValidationCallback = (message, certificate2, arg3, arg4) => true, ClientCertificateOptions = ClientCertificateOption.Manual, ClientCertificates = {new X509Certificate2(@"E:\cert\rootTrust.cer","11111111"),new X509Certificate2(@"E:\cert\middleTrust.cer","11111111"),new X509Certificate2(@"E:\cert\wskey.pfx","ws654321") } };
var webRequest = new HttpClient(handler);var result = webRequest.GetStringAsync(url).GetAwaiter().GetResult(); Console.WriteLine("xx"); }}
原文地址:https://www.cnblogs.com/myzony/p/10482113.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
.NET Core 使用 HttpClient SSL 请求出错的解决办法相关推荐
- .net core 1.1 mysql_Asp.net Core 1.1 升级后操作mysql出错的解决办法
这篇文章主要介绍了Asp.net Core 1.1 升级后操作mysql出错的解决办法,需要的朋友可以参考下 遇到问题 core的版本从1.0升级到1.1,操作mysql数据库,查询数据时遇到Miss ...
- pip install skimage安装skimage库出错的解决办法
pip install skimage安装skimage库出错的解决办法 安装skimage库出错 pip install skimage 解决办法: pip install scikit-image
- 【原创】vegas提示NTDLL.DLL出错的解决办法
ntdll.dll是什么?ntdll.dll出错怎么办?ntdll.dll位置在哪?ntdll.dll下载之后放在哪里?请看本文详解.ntdll.dll下载地址:点击下载 ntdll.dll文件分析 ...
- iis7mysql 链接不上_Win7 64位IIS7出现数据库链接出错的解决办法
这个问题绝对困扰了大部分菜鸟网友,这里结合本人经验给大家归纳为两点,对,只需要两点,网上那么多复杂的办法都是多余的,只需要两点,绝对搞定一切问题. 方法一:开启父路径 在IIS7中ASP默认情况下,& ...
- win 2008 64位IIS7出现数据库链接出错的解决办法
法一:开启父路径 在IIS7中ASP默认情况下,"父路径"是没有启用的,我们必须手动开启"父路径",选择"True",搞定"父路径 ...
- jenkins 忘记密码或认证配置出错后解决办法
背景 我们测试环境的 Jenkins 是通过 Crowd 进行统一登录认证,授权策略采用"项目矩阵授权策略",运维同事在配置Role-Based Strategy时出错,导致所有用 ...
- springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出错的解决办法
springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出错的解决办法 参考文章: (1)springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出 ...
- win10中conda activate激活环境出错的解决办法
win10中conda activate激活环境出错的解决办法 报错原因 解决方法 今天在运行代码的时候出现了以下问题,报错 CommandNotFoundError: Your shell has ...
- Ajax请求session超时解决办法
Ajax请求session超时解决办法 问题描述 通过ajax发送请求,被后台过滤器或者拦截器拦截的时候,如果session超时,不会直接跳转到登录页面. 解决方案 在过滤器或者拦截器中设置respo ...
最新文章
- OpenCV4中的非典型深度学习模型
- 【连载】高效人士的116个IT秘诀(第2版)——秘诀24为你的时间建一个构造图
- FPGA中block ram和distributed ram的区别
- Python itertools模块
- 新无限天空服务器,天空魔域3782版最新服务端(含网站程序)
- html文件语言表示网页标题,HTML网页基本结构(HTML文件、编程语言)——十一号笔记...
- python入门指南_Python中的逻辑门–入门指南
- 虚伪,不只是形容一个人
- C51单片机引脚名词英文全称
- 什么是摄像头自带wifi热点
- 强大的实用的mac软件卸载应用软件,彻底清除App残留
- php生成字母头像,Identicon:实现根据用户账号生成像素头像php版
- 数论——佩尔方程变量分解
- html页面标尺,canvas实现标尺.html
- 投稿Springer旗下Natural Hazard的时间记载
- Win10删除IE图标
- 2014英菲尼迪的万人盛典一线巨星在华演出全程记录
- 人大金仓数据库备份应用sys_dump的使用
- 为什么说纯电动车是汽车的未来?
- Opencv教程:人工智能图像处理入门案例实战
热门文章
- Linux 练习题-3文件与磁盘 问答
- IE8采用IE7模式
- libgdx游戏引擎开发笔记(十)SuperJumper游戏例子的讲解(篇四)---- 主游戏界面内部框架编写...
- 2014 网选 上海赛区 hdu 5047 Sawtooth
- LeetCode 3_Longest Substring Without Repeating Characters
- 利用Xshell实现非对称秘钥对安全登陆linux服务器(Centos、Ubuntu)
- C++程序运行时内存布局之--无继承情况下的虚函数
- 爱情三十一课,先信自己
- Serilog 日志框架如何自动删除超过 N 天的日志 ?
- 怎么才能把项目做烂?!