我正试图连接到一个安全的网页以获得响应时间:然而,我一直收到这个错误
基础连接已关闭:发送时发生意外错误。-System.IO.IOException:无法从传输连接读取数据:远程主机强制关闭了现有连接。
这是代码
static void Main(string[]args){
string url = "some url";
ServicePointManager.ServerCertificateValidationCallback =
new RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return true; });//requires that .NEt 4.5 be installed but not targeted
string fileName = "file ocation";//<--Example
WebClient WC = new WebClient();
DateTime currentDateTime = DateTime.Now;
string x = "";
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
StreamWriter writer = new StreamWriter(fileName, true);
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
Stopwatch timer = new Stopwatch();
timer.Start();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
timer.Stop();
TimeSpan timeTaken = timer.Elapsed;
writer.WriteLine(currentDateTime.ToString() + " - " + timeTaken.ToString());
writer.Close();
}
catch (WebException ex)
{
writer.WriteLine(currentDateTime.ToString() + " " + ex.Message + " - " + ex.InnerException.ToString(), true);
}
}
解决了它。我不明白为什么代码出错;然而自从我使用VS 2010以来,它只上升到了.net 4.0。因此,SecurityProtocol缺少枚举。一旦我为丢失的枚举强制转换整数,它就起到了的作用
ServicePointManager.SecurityProtocol=(SecurityProtocolType)48|(SecurityProtcolType)192|(SecurityProtocol)768|(SecurityProtocolType)3072;ServicePointManager.ServerCertificateValidationCallback=new RemoteCertificateValidationCallback((发送方、证书、链、策略错误)=>{return true;})//需要安装.NEt 4.5,但不是目标