C#:WinForm进行HTTP请求正常,同样的请求放到WinService就报错:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。
1:解决方案:
//引入命名空间
using System.Net.Security;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
2:
/// <summary>
/// 证书验证方法,总是返回true
/// </summary>
public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{ // 总是接受
return true;
}
3:HTTP请求前调用验证方法
public static Stream PostUrlForStream(string url, string param, PostEnum postEnum, string inputCharset = "utf-8")
{
try
{
//HTTP请求前调用验证方法,强制验证通过
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);//验证服务器证书回调自动验证
}
catch(Exception ex) {
}
return null;
}
参考:https://www.cnblogs.com/sufei/archive/2010/03/23/1692811.html
问题应该是出在证书验证上,这么做相当于让证书验证变得无效,目前我还没有找到其他更好的方法.