根據this article,我擴展了System.Windows.Forms.WebBrowser
類以實現自定義錯誤處理。大多數情況下,它的工作。爲WebBrowser控件實現自定義401處理
問題出現在瀏覽器得到「401未授權」響應時。這種響應會導致WebBrowser
控件顯示標準的用戶名/密碼對話框。直到該對話框被取消,NavigateError
事件纔會被觸發。
那麼,我能做些什麼來捕獲401響應,並以我自己的方式處理它?
我認爲會有一些我可以做的事情,例如我會捕獲NavigateError
事件,並以我自己的方式處理這些事情,但我沒有看到任何事情。
編輯:解決方案找到了!
的重要步驟是:
1. web瀏覽器控件必須第一被導航到非安全頁面(「關於:空白」是所使用的典型的URL),以避免KB 320153
2,主機對於WebBrowser控件必須實現IOleClientSite
,IServiceProvider
和IAuthenticate
。
3. IServiceProvider.QueryService
必須處理IAuthenticate
服務請求和IAuthenticate
實現,所有其他服務請求可以使用INET_E_DEFAULT_ACTION
響應處理。
4. IAuthenticate.Authenticate
是您的自定義身份驗證處理程序。
這幾乎是我正在尋找的信息,謝謝!現在我已經爲除了第一個以外的所有身份驗證請求提供了自定義處理。你知道我可能會錯過的其他東西嗎? – Task
您可以將服務器的響應標題添加到問題中嗎?您可以在運行IE或Web瀏覽器主機時使用fiddler收集響應。 –
想通了!在IE中的已知錯誤,在文章中有一小段參考文獻解釋了一切。我在問題中添加了一些註釋以突出未來訪問者的重要步驟。你知道,假設其他人在某個時候想要做同樣瘋狂的事情,我必須做的。 8) – Task