【发布时间】:2011-12-29 00:08:45
【问题描述】:
根据this article,我扩展了System.Windows.Forms.WebBrowser 类以实现自定义错误处理。大多数情况下,它有效。
当浏览器收到“401 Unauthorized”响应时,问题就出现了。这种响应会导致WebBrowser 控件显示标准的用户名/密码对话框。在取消该对话框之前,不会触发 NavigateError 事件。
那么我可以做些什么来捕获 401 响应并以我自己的自定义方式处理它?
我认为我可以做一些事情,例如我可以捕获NavigateError 事件并以我自己的方式处理这些事情,但我没有看到任何东西。
编辑:找到解决方案!
重要的步骤是:
1. WebBrowser 控件必须首先导航到非安全页面(“about:blank”是使用的典型 URL)以避免KB 320153
2. WebBrowser 控件的宿主必须实现IOleClientSite、IServiceProvider和IAuthenticate。
3.IServiceProvider.QueryService必须用IAuthenticate实现处理IAuthenticate服务请求,其他所有服务请求都可以用INET_E_DEFAULT_ACTION响应处理。
4. IAuthenticate.Authenticate 是您的自定义身份验证处理程序。
【问题讨论】:
标签: c# webbrowser-control http-status-code-401