相关疑难解决方法(0)

WebBrowser控件 - 忽略SSL错误

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

http://imgur.com/Uqt7H

我已经看过很多帖子了:

如何在Webbrowser控件中禁用"安全警报"窗口 - 不起作用,因为WebBrowser显然不使用ServicePointManager

抑制托管WebBrowser控件对话框 - 取决于知道窗口标题,这对非英语用户不起作用

C#WebBrowser控件 - 忽略网站安全警告 - 这是一个重复关闭,答案只是参考上面的链接.

大多数表单帖子建议实现我已经完成的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;
}
Run Code Online (Sandbox Code Playgroud)

最后,我似乎无法找到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;
}
Run Code Online (Sandbox Code Playgroud)

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

internet-explorer webbrowser-control

14
推荐指数
1
解决办法
1万
查看次数

如何以编程方式向WebBrowser控制安全警报回答"是"

我正在使用WebBrowser控件以编程方式访问单个网站,但每当我登录时,我都会收到此证书安全警报:

在此输入图像描述

由于我信任该网站,并且因为我需要以编程方式自动化登录,所以此对话框会受到阻碍.

我搜索SO的解决方案,并发现了类似地雷问题,但接受的答案不工作!

我在包含WebControl的表单中定义了一个静态成员:

public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
  return true;
}
Run Code Online (Sandbox Code Playgroud)

在我的表单构造函数中,我添加了:

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
Run Code Online (Sandbox Code Playgroud)

但这并没有摆脱证书安全警报.

我也点击了View Certificate按钮,然后点击了Install Certificate随后的对话框中的按钮,但这似乎也没有帮助.

有没有办法摆脱这个警告?

是否有IE相当于Firefox的一个添加安全例外

注意:所有者的证书与独立浏览器(IE,FF,Chrome,Safari)完全正常(没有显示此安全警报).它只显示WebBroswer控件的问题.

c# webbrowser-control winforms

3
推荐指数
2
解决办法
6087
查看次数

在哪里放置RemoteCertificateValidationCallback?

遇到与此处相同的问题:如何在Webbrowser控件中禁用"安全警报"窗口

我喜欢这个答案,但是我要去哪里ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

在我使用以下代码提交学校网络的登录页面后,我收到"无效认证"消息:

HtmlElementCollection ellements = webBrowser.Document.GetElementsByTagName("input");
foreach (HtmlElement ellement in ellements)
{
    if (ellement.OuterHtml == "<INPUT onclick=\"this.value = 'Submitted'\" value=\" Login \" type=submit>")
    {
        ellement.InvokeMember("click");
        this.DialogResult = DialogResult.OK;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

1
推荐指数
1
解决办法
2万
查看次数