Mar*_*nHN 2 c# ssl httpwebrequest
我正在使用此代码向请求的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;
}
Run Code Online (Sandbox Code Playgroud)
我用它来测试工作负载均衡器的粘性,后面有3台服务器.它们都有一个名为sid.htm的静态HTM文件,其中写入了服务器的服务器ID.
对于带有HTTP的URL,这可以正常工作.但是使用HTTPS它不起作用.我得到这个例外:
请求已中止:无法创建SSL/TLS安全通道.
目前,我只有2台WLB后面的服务器,另一台独立于防火墙后面的公共IP.如果我点击独立服务器,HTTPS请求工作正常 - 但是当我点击WLB时,我得到上述错误.
一件事:为了在命中单个服务器和WLB之间切换我使用我的主机文件.我的域的DNS记录目前指向单个服务器.所以我在主机文件中放入一条记录来点击WLB.这不应该导致问题......
我的问题:HttpWebRequest使用哪些SSL凭证/证书?如果它使用40位DES或56位DES,那就是原因,因为它们在WLB中被禁用.但是自从IE3和Netscape 1和2以来,这些证书还没有在浏览器中使用过.
它在我的浏览器中完美运行.
在我发布问题后1分钟我找到了解决方案:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
Run Code Online (Sandbox Code Playgroud)
这意味着HttpWebRequest正在使用TLS 1.0 - 我不知道,但我认为这是40位DES或56位DES,在WLB中被禁用.
| 归档时间: |
|
| 查看次数: |
6769 次 |
| 最近记录: |