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();

動作しているマシンと故障しているマシンの間にOS/構成パターンが見つかりません。これは、管理者ユーザーで実行されるコンソールアプリケーションです。

これに関する唯一の特別なことは、アクセスされているURLが、自己発行のSSL証明書を使用しているテストサーバーに実行されているイメージであるため、上記のコードに表示されているServerCertificateValidationCallbackを使用した回避策が必要でした。

私がテストした他のURLは正しく機能しました。

誰かがこの問題の考えられる原因と回避策を特定するのを手伝ってもらえますか?

4

2 に答える 2

1

いつものように、一度理解すれば非常に簡単です。問題が発生しなかったマシンには、.NetFramework4.5がインストールされていました。

これは、4.5が4.0のインプレースアップデートであり、コアライブラリに対するいくつかのバグ修正が含まれているためと考えられます。

于 2013-01-11T18:21:21.947 に答える
0

私はWin7、VS2010で同じ問題を抱えていましたが、Windows Update-.NET 4.5.1へ更新によって解決されました。これは、特定のクライアントだけ でなく、特定のサーバーでも発生することを言及する価値があります。(コメントとして投稿しますが、十分な評価はありません)Windows Updateを使用せずにこれを解決した人はいますか?


于 2014-01-23T13:10:30.533 に答える