今天部署一个应用到,部署应用遇到个小坑。
部署环境
- 服务器:Linux Sever
- 环境:Mono 6.x
- 应用:.NET Framework 4.X ConsoleApp
问题
在本地开发环境上,运行 mono ConsoleApp.exe
跑得十分欢快。结果,部署到生产环境就立马挂掉了!
一通查log + Debug下来,发现全都是Http客户端请求Https地址,因为SSL安全校验的报错。
HttpWebRequest 报错:TrustFailure (Authentication failed, see inner exception.)
HttClient 报错:The SSL connection could not be established
问题找到了,于是连忙问某度。找到了一个简单粗暴的解决方案,不废话直接上代码:
- for HttClient
HttpClientHandler httpClientHandler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = (message, certificate2, arg3, arg4) => true
};
var httpClient = new HttpClient(httpClientHandler);
var response = httpClient.GetAsync(url)
....
- for HttpWebRequest
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((message, certificate2, arg3, arg4) => true);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
...
搞定,收工!