【问题标题】:WebBrowser control - ignore SSL errorsWebBrowser 控件 - 忽略 SSL 错误
【发布时间】:2011-10-19 11:33:23
【问题描述】:

数小时的搜索仍未找到答案。我们正在寻找一种方法,使 .NET WebBrowser 控件可以导航到存在 SSL 安全问题(自签名证书或不匹配的主机名)的页面,而无需停止并显示错误页面:

我已经看过很多贴子了:

How to disable “Security Alert” window in Webbrowser control -- 不起作用,因为 WebBrowser 显然不使用 ServicePointManager

Suppressing Hosted WebBrowser Control Dialogs -- 取决于知道窗口标题,这对非英语观众不起作用

C# WebBrowser Control - ignore website security warnings -- 这已作为副本关闭,答案仅参考上述链接。

大多数表单帖子都建议实施 IInternetSecurityManager,我已经这样做了,但无济于事。
对所有 URL(指定 URLZONE_LOCAL_MACHINE 或 URLZONE_TRUSTED)使用 GetSecurityId 的常量值进行响应不起作用。

以下没有帮助:

public unsafe int MapUrlToZone(string url, int* pdwZone, int dwFlags)
{
    *pdwZone = 3; // URLZONE_TRUSTED;
    return Win32.S_OK;
}

最后,我似乎找不到让 ProcessUrlAction 产生任何效果的方法:

public unsafe int ProcessUrlAction(string url, int dwAction, byte* pPolicy, int cbPolicy,
            byte* pContext, int cbContext, int dwFlags, int dwReserved)
{
    *((int*)pPolicy) = (int)Win32.UrlPolicy.URLPOLICY_ALLOW;
    return Win32.S_OK;
}

有没有人成功找到通过 SSL 警告页面的方法?

【问题讨论】:

    标签: internet-explorer webbrowser-control


    【解决方案1】:

    你需要实现的接口是IHttpSecurity。有关基于 Windows 窗体的示例,请参阅 http://jiangsheng.net/2013/07/17/howto-ignoring-web-browser-certificate-errors-in-webbrowser-host/

    【讨论】:

    • 这是一个伟大的发现盛 - 谢谢。但我想这意味着 .NET WebBrowser 控件无法自行解决这个问题,对吧?
    • 您说的是哪个 .Net 网络浏览器? WinForm?WPF?Silverlight?
    【解决方案2】:

    对我来说,它正在使用以下代码:

    ' automatically accept HTTPS certificates
    ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications
    

    希望对你有用;)

    【讨论】:

      猜你喜欢
      • 2012-05-10
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 2011-02-14
      • 1970-01-01
      • 2011-06-07
      相关资源
      最近更新 更多