有一项服务。我必须通过HTTPS协议连接到它,通过POST方法上传数据,并下载结果。该连接使用用户专用证书(以*.p12格式)进行身份验证。
为此,我编写了以下功能:
static public string PostLPDA(string fileName, string URL, string certificateFile)
{
X509Certificate cert = new X509Certificate(certificateFile); // importing certificate from file <===== 1
StreamReader sr = new StreamReader(fileName);
string postString = string.Format("Query={0}", sr.ReadToEnd()); // preparing data to send
const string contentType = "application/x-www-form-urlencoded";
System.Net.ServicePointManager.Expect100Continue = false;
CookieContainer cookies = new CookieContainer();
HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
webRequest.Method = "POST";
webRequest.ContentType = contentType;
webRequest.CookieContainer = cookies;
webRequest.ContentLength = postString.Length;
webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1";
webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webRequest.ClientCertificates.Add(cert); //adding certificate
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, certificate, chain, sslPolicyErrors) => true); // ignore untrusted site error <===== 2
StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream()); // <===== 3
requestWriter.Write(postString);
requestWriter.Close();
StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
string responseData = responseReader.ReadToEnd();
responseReader.Close();
webRequest.GetResponse().Close();
return responseData;
}在我的电脑上一切正常-没有例外,错误,数据正在成功上传,有正确的响应从服务。
但在其他每台PC上,都有用<====== 3在线标记的异常,并带有消息:
请求被中止:无法创建SSL/TLS安全通道。
我使用的是相同的证书文件、相同的地址和相同的数据。结果就是错误,我想不出是怎么回事。
有人能帮忙吗?
发布于 2013-10-16 08:36:31
好吧,我找到解决办法了。
证书必须在操作系统中注册。否则,它就行不通了。
不管怎样,谢谢你的关注。
https://stackoverflow.com/questions/19354288
复制相似问题