2

我有一个非常奇怪的特定于机器的问题。在某些机器上,下面的代码有效,在其他机器上它会冻结,直到 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 工作正常。

谁能帮我确定此问题的可能原因和解决方法?

4

2 回答 2

1

像往常一样,一旦弄清楚就很简单了:不存在问题的机器安装了 .Net Framework 4.5。

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

于 2013-01-11T18:21:21.947 回答
0

我在Win7 和 VS2010上遇到过同样的问题,它已通过 windows update - update to .NET 4.5.1
解决了 另一件事值得一提的是它也只发生在特定的服务器上,而不仅仅是特定的客户端。
(我会发表评论但没有足够的评级)
有没有人在不使用 Windows 更新的情况下解决了这个问题?

于 2014-01-23T13:10:30.533 回答