このコードを使用して、特定のURLにリクエストを送信します。
private static string GetWebRequestContent(string url)
{
string sid = String.Empty;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.KeepAlive = false;
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
using (StreamReader sr = new StreamReader(res.GetResponseStream()))
{
sid = sr.ReadToEnd().Trim();
}
}
return sid;
}
これを使用して、3台のサーバーが背後にあるWorkLoadBalancerの粘着性をテストしています。それらはすべて、サーバーのサーバーIDが書き込まれるsid.htmと呼ばれる静的HTMファイルを持っています。
HTTPを使用するURLの場合、これは正常に機能します。しかし、HTTPSでは機能しません。この例外が発生します:
要求は中止されました:SSL/TLSのセキュリティで保護されたチャネルを作成できませんでした。
現在、WLBの背後には2台のサーバーしかなく、ファイアウォールの背後にパブリックIPを備えたサーバーが1台あります。スタンドアロンサーバーにアクセスした場合、HTTPSリクエストは正常に機能しますが、WLBにアクセスすると、上記のエラーが発生します。
1つ:単一サーバーとWLBのヒットを切り替えるために、hostsファイルを使用します。私のドメインのDNSレコードは、現時点では単一のサーバーを指しています。そこで、ホストファイルにレコードを入れてWLBをヒットしました。これは問題を引き起こしてはいけません...
私の質問:HttpWebRequestはどのSSLクレデンシャル/証明書を使用しますか?40ビットDESまたは56ビットDESを使用する場合、それらはWLBで無効になっているため、これが理由です。ただし、IE3およびNetscape 1および2以降、これらの証明書はブラウザで使用されていません。