C# 代理上的HTTPS不';行不通

C# 代理上的HTTPS不';行不通,c#,https,proxy,.net-4.5,webclient,C#,Https,Proxy,.net 4.5,Webclient,我知道StackOverflow和互联网上有很多问题和答案,都有完全相同或非常相似的错误信息,我很确定我已经阅读并尝试了90%。我还是不能把这个修好 下面是Visual Studio建议的带有WebClient的代码。但是我也尝试了HttpWebRequest/WebRequest,尽管警告说它已经过时了。没有更改,我收到了相同的错误:“请求被中止:无法创建SSL/TLS安全通道。” 下面是代码makeProxy实际上只有3行,一个新的WebProxy加上它的凭证。我相信它是有效的,因为(a)如

我知道StackOverflow和互联网上有很多问题和答案,都有完全相同或非常相似的错误信息,我很确定我已经阅读并尝试了90%。我还是不能把这个修好

下面是Visual Studio建议的带有
WebClient
的代码。但是我也尝试了
HttpWebRequest/WebRequest
,尽管警告说它已经过时了。没有更改,我收到了相同的错误:“请求被中止:无法创建SSL/TLS安全通道。

下面是代码
makeProxy
实际上只有3行,一个新的
WebProxy
加上它的凭证。我相信它是有效的,因为(a)如果我在那里提供了错误的凭证,那么我会得到一个身份验证错误,(b)如果我尝试转到http而不是https页面,那么我会得到它,所以我会上网

protected string getToken() {
    string url = ConfigurationManager.AppSettings["domo_api_url_auth"];    
    WebClient c = new WebClient();
    c.Proxy = makeProxy();
    c.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["domo_api_cid"], ConfigurationManager.AppSettings["domo_api_pwd"]);
    c.Encoding = System.Text.Encoding.UTF8;

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
    // ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
    // ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate;

    Stream responseStream = c.OpenRead(url);
    return new StreamReader(responseStream).ReadToEnd();
}
我的问题是,这条信息不是很有帮助。我也试着调试它,但没有帮助。我想到了我试图访问的web服务站点上的证书,并经历了允许W3SVC使用该证书的过程。没有帮助。我在每个https网站上都会遇到同样的错误,比如google.com、stackoverflow.com或我自己公司的网站。但是当我去一个只有http的随机新闻网站时,一切都很好

最令人怀疑的是,即使我取消注释第一行
ServerCertificateValidationCallback
时,它也不起作用,而当我取消注释第二行时,可能会将代码重定向到验证,它实际上永远不会到达那里。就像验证还没开始一样


如何对此进行故障排除?我甚至不知道它在web请求-响应过程的哪一点失败

除SSLv3外,您可能还需要激活TLS:

ServicePointManager.SecurityProtocol = 
    SecurityProtocolType.Ssl3 | 
    SecurityProtocolType.Tls | 
    SecurityProtocolType.Tls11 | 
    SecurityProtocolType.Tls12;

尝试将所有标志(包括TLS)添加到ServicePointManager.SecurityProtocol。如果将Windows设置为使用代理,浏览器中的HTTPS是否有效如果它确实查看了证书,并查看它是颁发给站点的合法证书还是代理服务器插入的证书。如果启用跟踪,您可以获得非常详细的日志:是的,我在笔记本电脑上使用同一个代理(我也在处理这个问题),https在任何地方、所有浏览器、所有站点都可以工作。啊,我不相信这一点@亚历克斯克。请你加上这个作为回答好吗?我会接受作为解决方案。它缺少TLS吗?是的。根据这里的另一个答案,我还尝试设置SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12,但仅设置Tls。。。