C#/.NET WebBrowser控件中SSL/TLS/HTTPS网站非常缓慢,但在Internet Explorer中正常。

3

背景

我正在修改AutoWikiBrowser,使其能够与托管在安全服务器上的MediaWiki站点配合使用。我允许用户通过C#应用程序中的WebBrowser控件手动登录,然后保存存储的cookie以供HttpWebRequest使用。

问题

我的问题是,任何使用SSL/TLS(https:// urls)的站点都需要非常长的时间才能加载,经常会超时。我不仅尝试了涉及到的MediaWiki站点,还尝试了其他安全站点,如PayPal和安全GMail。

出于好奇,我在Visual Studio的帮助浏览器、[VB WebBrowser示例][2]和[WPF WebBrowser控件示例][3]中尝试了相同的https站点,它们都非常缓慢。这些站点在Internet Explorer 7(当然还有Firefox)中表现得很好。

问题

是什么导致.NET WebBrowser控件使用SSL/TLS站点(https urls)非常缓慢,但在Internet Explorer中加载正常?


它不允许我在使用的两个示例中发布链接,因此我将在这里尝试。 [VB WebBrowser示例] [2]和[WPF WebBrowser控件示例] [3]。 [2]: msdn.microsoft.com/en-us/library/3tst62z1%28VS.80%29.aspx [3]: blogs.msdn.com/b/wpfsdk/archive/2008/08/18/wpf-webbrowser-control-sample.aspx - joshdoe
1个回答

0

在编写我们的聊天应用程序和 Web 服务时,我们遇到的一个问题是 HTTP、SSL 类型请求需要大量的时间来解决。实际上,在编写网站检查器(确保我们所有的站点/服务都在线)时,最初加载所有站点可能需要20秒到45秒的时间......这在 .NET 应用程序中并不是很有用。

然而,当我将代理设置为 NULL 时,它几乎瞬间加载。

但有时这样做会出错,所以你也可以这样做:

_api.Proxy = WebRequest.DefaultWebProxy;

但是,我仍然发现:

_api.Proxy = null;

对于大多数网络请求来说,仍然是最好的选择。

你也可以在应用程序配置文件中强制代理和超时时间比默认的 WinHTTP 设置要小得多,但指定以上内容应该可以解决你的问题。


这些长时间的延迟通常是由于无法联系到CRL服务器(证书吊销列表)引起的。 - Hans Passant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接