我正在使用此代码向给定 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 个服务器。它们都有一个名为 sid.htm 的静态 HTM 文件,其中写入了服务器的服务器 ID。
对于带有 HTTP 的 URL,这可以正常工作。但是对于 HTTPS,它不起作用。我得到这个例外:
请求被中止:无法创建 SSL/TLS 安全通道。
目前,我在 WLB 后面只有 2 台服务器,另外一台在防火墙后面有一个公共 IP。如果我点击独立服务器,HTTPS 请求可以正常工作 - 但是当我点击 WLB 时,我会收到上述错误。
一件事:为了在单台服务器和 WLB 之间切换,我使用了我的 hosts 文件。我的域的 DNS 记录目前指向单个服务器。所以我在我的主机文件中放了一条记录来访问 WLB。这不应该引起问题...
我的问题:HttpWebRequest 使用哪些 SSL 凭证/证书?如果它使用 40 位 DES 或 56 位 DES,这就是原因,因为它们在 WLB 中被禁用。但自从 IE3 和 Netscape 1 和 2 以来,这些证书就没有在浏览器中使用过。