我有一个简单的应用程序,它使用C#Web Client类下载网站HTML.这是我正在使用的代码的精简样本:
WebClient wc = new WebClient(); wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); htmlCode = wc.DownloadString("https://www.oig.hhs.gov/exclusions/exclusions_list.asp");
网站证书似乎存在问题,因为我遇到了这个例外:
The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel." "The remote certificate is invalid according to the validation procedure.
如果您将链接复制并粘贴到浏览器中,则需要您在允许您查看网站之前同意风险.它是一个政府网站,所以我不担心任何病毒或任何东西.有没有告诉网络客户端绕过这个问题,并继续访问该网站?
据我所知,这是因为他们使用无效或过期的SSL证书.您可以使用以下方法绕过(忽略)它:
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
编辑2015:
这篇文章得到了很多赞成,但我很遗憾我的回答.它可能会删除您的错误,但它无法解决问题.接受任何SSL证书会使你在中间攻击中容易受到攻击,所以这通常是一个非常糟糕的主意.我将留下此答案以供将来参考,但请注意,您应尝试在根目录中解决问题,即确保SSL证书有效.
试试这个:
你想要做的是,将证书安装到本地机器上.
如果不在代码中的过程将执行以下操作:
以管理员模式(不是Chrome)打开Internet Explorer.
转到该网站
选择继续
单击证书上的titelbar/url栏以查看证书.
单击安装证书.
因此,您可以尝试查看这些其他问题,看看它们是否对您有所帮助:
如何使用c#以编程方式将证书安装到本地计算机存储中?
在C#中将证书安装到Windows本地用户证书存储中
尝试安装证书,如果要求继续,请查看是否再次访问该URL.
****编辑**:
我读了网站证书,这是因为证书与网站的网址不匹配.
一个简单的改变是:
htmlCode = wc.DownloadString("https://oig.hhs.gov/exclusions/exclusions_list.asp");
只需删除www.