特定于机器的HttpWebResponse超时

本文关键字:HttpWebResponse 超时 机器 于机器 | 更新日期: 2023-09-27 17:51:05

我有一个非常奇怪的机器特有的问题。在某些机器上,下面的代码可以工作,在其他机器上,它会冻结,直到GetResponse()调用抛出超时异常。

string url = "https://myserver/myimage.png";
System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) =>
{
     return true;
});
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "GET";
req.AllowAutoRedirect = false;
try
{
    using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
    {
        Console.WriteLine("Success");
    }
}
catch (Exception ex)
{
    Console.WriteLine("Error: " + ex.ToString());
}
Console.ReadKey();

我在工作的机器和失败的机器之间找不到任何操作系统/配置模式。这是一个管理员用户运行的控制台应用程序。

唯一的特殊之处在于被访问的URL是一个运行到使用自颁发SSL证书的测试服务器中的图像,因此它需要使用上面代码中显示的ServerCertificateValidationCallback来解决这个问题。

我测试的其他url工作正常。

谁能帮我找出这个问题的可能原因和解决办法?

特定于机器的HttpWebResponse超时

像往常一样,一旦你弄清楚它就很简单了:没有出现问题的机器安装了。net Framework 4.5。

这很可能是因为4.5是4.0的本地更新,并且包含了对核心库的几个错误修复。

我在Win7, VS2010上有同样的问题,它是通过windows更新 - 更新到。net 4.5.1
解决的另一件值得一提的事情是,它也只发生在特定的服务器上,而不仅仅是特定的客户端。
(我会发表评论,但没有足够的评分)