【发布时间】:2019-09-16 17:11:42
【问题描述】:
我正在尝试从 imdb 下载 json 网页以查找演员。
try
{
using (WebClient wc = new WebClient())
{
string content = wc.DownloadString("https://v2.sg.media-imdb.com/suggests/names/b/brad.json");
}
}
catch (WebException x)
{
x.ToString();
}
每当我尝试进行下载时。
给出的例外是:
The underlying connection was closed: An unexpected error occurred on a send.
而内网异常是:
Received an unexpected EOF or 0 bytes from the transport stream.
从我读到的。发生这种情况是因为 imdb 的其中一台服务器配置错误。
为了解决这个问题,我使用了
System.Net.ServicePointManager.SecurityProtocol = (System.Net.SecurityProtocolType)(3072);
将安全协议设置为 Tls12,这确实解决了我的 PC 上的问题。
但是,当我尝试在第二台 PC 上使用它时。该行抛出异常:
System.NotSupported: The requested security protocol is not supported
我认为这意味着它在该 PC 上不支持 tls12。
我在那台 PC 上安装了 .NET Framework 4.5.1,但由于安装失败,我无法安装 .NET Framework 4.7。
我认为安全协议是 4.7 附带的,但我没有在 MSDN 上看到这一点。
如何在第二台电脑上下载网页?
我有办法手动安装 Tls12 协议吗?
是否有替代方法使用 HttpWebRequest 或一些独立的可执行文件?
【问题讨论】:
-
对 4.5.1 的支持很久以前就结束了。你为什么还在用它? 4.7就算做不到,4.5.2和4.6还是可以试试的。
-
@mason,最佳解决方案是与 .NET Framework 3.5 一起使用,甚至独立于 .NET Framework。如果我有问题,那么其他人也会有问题,所以我宁愿没有如此高和错误的依赖关系。
-
“如此高且错误的依赖项”是指“像任何理智的人一样在受支持的版本上运行”吗?哪个版本的 Windows 失败了?
标签: c# security ssl web webclient