我正在使用Webbrowser控件使用“不受信任的证书”登录HTTPS站点。 但我得到弹出这样的标准窗口“安全警报”关于不受信任的证书:

我必须按标题找到此窗口并发送 Alt + Y

int iHandle = NativeWin32.FindWindow(null, "Security Alert");
NativeWin32.SetForegroundWindow(iHandle);
System.Windows.Forms.SendKeys.Send("Y%");

但是用户可以看到此窗口的闪烁。

如何忽略此提醒?
或者禁用此“不受信任的证书”检查Webbrowser控件?

有帮助吗?

解决方案

这应该这样做:

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

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

显然,盲目地允许证书存在安全风险。小心。

其他提示

好的,文章涉及代码项目 - 请参阅 http://www.codeproject。 COM / KB /壳/ WebBrowserControlDialogs.aspx 希望这会有所帮助。

如果证书不是来自受信任的认证机构(提示中的第一点),那么您可以在相关PC上的受信任的根证书颁发机构下安装证书。

您可以在“查看证书”下执行此操作。

在某些方面,这可能是一个更简单的解决方案,因为它不需要任何接受任何和所有证书的代码更改。但是,它确实需要在使用应用程序的任何地方安装证书。

在这里,我们采用解决方案: 我在Browser_Navigated事件上运行它,因为在此之前底层的activeX组件为null。

参考: https://social.msdn.microsoft.com/Forums/vstudio/en-US/4f686de1-8884-4a8d -8ec5-ae4eff8ce6db /新WPF的网页浏览器,怎么办-I-抑制-脚本错误?论坛= WPF

         private void Browser_Navigating_1(object sender, NavigatingCancelEventArgs e)
        {
        HideScriptErrors(Browser,true);

        }

    public void HideScriptErrors(WebBrowser wb, bool Hide)
    {

        FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
        if (fiComWebBrowser == null) return;
        object objComWebBrowser = fiComWebBrowser.GetValue(wb);

        if (objComWebBrowser == null) return;

        objComWebBrowser.GetType().InvokeMember(
        "Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { Hide });

    }

当我将WebBrowser.ScriptErrorsSuppressed属性设置为false时,我不再获得这些弹出窗口

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top