26

C# Web クライアント クラスを使用して Web サイトの HTML をダウンロードする単純なアプリがあります。これは、私が使用しているコードの簡略化されたサンプルです。

WebClient wc = new WebClient();
wc.Headers.Add("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
htmlCode = wc.DownloadString("https://www.oig.hhs.gov/exclusions/exclusions_list.asp");

次の例外が発生したため、Web サイトの証明書に問題があるようです。

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel." "The remote certificate is invalid according to the validation procedure.

リンクをコピーしてブラウザーに貼り付ける場合、サイトの表示を許可する前にリスクに同意する必要があります。政府のウェブサイトなので、ウイルスなどの心配はありません。Web クライアントにこの問題を回避してサイトにアクセスするように指示する方法はありますか?

4

5 に答える 5

55

私の知る限り、これは無効または期限切れの SSL 証明書を使用しているためです。以下を使用してバイパス (無視) できます。

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

編集 2015 :

この投稿には多くの賛成票が寄せられていますが、回答を後悔しています。エラーは解消されるかもしれませんが、問題は解決しません。SSL 証明書を受け入れると、中間者攻撃に対して脆弱なままになるため、一般的には非常に悪い考えです。今後の参考のためにこの回答を残しておきますが、SSL証明書が有効であることを確認して、問題を根本的に解決するようにしてください。

于 2012-09-27T15:33:47.493 に答える
16

これを試してみてください
あなたがしたいことは、証明書をローカルマシンにインストールすることです。

コードに含まれていない場合の手順は、次のとおりです。

  1. 管理者モードで Internet Explorer を開きます (Chrome ではありません)。
  2. サイトに行く
  3. 続行を選択
  4. 証明書のタイトル バーまたは URL バーをクリックして、証明書を表示します。
  5. [証明書のインストール] をクリックします。

したがって、これらの他の質問を見て、それらが役立つかどうかを確認してみてください。

証明書のインストールを試み、続行するように求められた場合は、再度 URL にアクセスするかどうかを確認してください。

****編集**:
サイトの証明書を読みました。これは、証明書とサイトの URL が一致していないためです。

簡単な変更は次のようになります。

htmlCode = wc.DownloadString("https://oig.hhs.gov/exclusions/exclusions_list.asp");

wwwを削除するだけです。

于 2012-09-27T15:41:05.237 に答える