我正在使用WebClient
从Web资源中获取数据,因此:
var wc = new System.Net.WebClient();
var stream = wc.OpenRead("http://...");
// etc..
它一直工作到最近,直到服务器强行关闭连接。
基于this StackOverflow answer,我添加了ServicePointManager
设置:
var wc = new System.Net.WebClient();
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var stream = wc.OpenRead("http://...");
// etc..
...,它再次像以前一样工作。
我了解到TLS与HTTPS相关,并且此设置的作用是在握手中包含TLS1.2,并且主机站点必须最近已更新以拒绝较旧的易受攻击的协议,但是 为什么普通的非安全HTTP必需 ?
答案 0 :(得分:1)
AllowAutoRedirect 默认设置为 true 。 因此,该请求会自动跟随来自服务器的重定向响应。
只需将 AllowAutoRedirect 设置为false,就不会进行任何重定向,因此您不必处理SSL / TLS握手。
当然,如果您的服务器不想使用HTTP服务您的请求,那么您将不会获得所需的内容。无论如何,将 AllowAutoRedirect 设置为false可以帮助您确认遇到的行为是由于重定向引起的。