XP环境下的网络证书问题
Posted Try and do it!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XP环境下的网络证书问题相关的知识,希望对你有一定的参考价值。
项目过程中,由于是收银系统需要从服务器获取支付二维码,会产生SSL连接的问题,在win7、win10上都没有问题,放到WIN XP上出现了The underlying connection was closed:could not establish trust,
经过查阅相关资料发现是证书问题,采用了最简单的快捷的禁止证书验证,代码如下
//将客户端访问的证书修改为无证书 ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
代码放置的位置为进行HTTPwebRequest请求时,完全代码如下
/// <summary> /// 建立连接 /// </summary> /// <param name="sendmenssage">发送字符串 /// <param name="message"></param> /// <returns></returns> public bool HttpConn(string sendmenssage, out string message) { try { //将客户端访问的证书修改为无证书 ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
request = (HttpWebRequest)WebRequest.Create(Common.Const.QueryUrl);//原因是这 每次都是一个新的request 上次abort不影响 request.Method = "POST"; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)"; // request.ContentType = "application/octet-stream";//get request.ContentType = "application/x-www-form-urlencoded;";//post // request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; request.Accept = "*/*"; request.Timeout = 20 * 1000; request.AllowAutoRedirect = true; StringBuilder data = new StringBuilder(); data.Append(sendmenssage); // MyMsgBox.Show("send:" + sendmenssage+"\n "+this.GetHashCode()); Byte[] bytes = System.Text.Encoding.Default.GetBytes(data.ToString()); request.ContentLength = bytes.Length; //AsyncCallback ac1 = null; //ac1 = new AsyncCallback((IAsyncResult r) => { Stream writer = request.EndGetRequestStream(r); writer.Write(bytes, 0, bytes.Length); writer.Close(); }); //request.BeginGetRequestStream(ac1, null); using (Stream writer = request.GetRequestStream()) {//同样的请求会卡在这 writer.Write(bytes, 0, bytes.Length); writer.Close(); } HttpWebResponse response; // 获得响应流 using (response = (HttpWebResponse)request.GetResponse()) { Stream s; s = response.GetResponseStream(); StreamReader reader = new StreamReader(s); StringBuilder sb = new StringBuilder(); string tmp = reader.ReadLine(); while (tmp != null) { sb.Append(tmp); tmp = reader.ReadLine(); } reader.Close(); message = sb.ToString(); } request.Abort(); return true; } catch (Exception e) { Log.WriteLog("服务器连接异常:" + e.Message); message = ""; return false; } }
以上是关于XP环境下的网络证书问题的主要内容,如果未能解决你的问题,请参考以下文章
XP系统装一个游戏时下载安装Directx插件时出现:请检查加密服务是不是启用并且Cabinet文件证书是不是有效怎么办