2010-02-11 47 views
0

我們在對話框中嵌入了.NET WebBrowser控件(實際上兩個在不同的選項卡中,如果出於某種原因可能很重要)並且正在運行一個奇怪的問題。我無法在整個應用程序之外重現問題,所以我認爲我們正在其他地方做一些副作用。因此,我無法發佈任何代碼來重現問題,但我仍然希望有人可能至少會對如何調試情況提出建議,並可能找到組件失敗的原因。在加載新的HTML頁面時掛起.NET WebBrowser組件

通常,一切都按預期工作。我們將控件添加到對話框並調用其Navigate方法從服務器獲取HTML頁面。在某些情況下(可能是20-25%的嘗試),控件保持空白並持續顯示等待的光標。從獨立IE瀏覽器加載相同的URL時,問題無法重現。

爲了找到問題,我們正在記錄導航,導航,DocumentCompleted,ProgressChanged和StatusTextChanged事件。在它工作的情況下,我們可以按順序看到導航,導航和DocumentCompleted事件,以及幾個ProgressChanged和StatusTextChanged事件(具有合理值)混合在一起。

在組件失敗的情況下,只激發Navigating事件。然而,服務器日誌和網絡轉儲確認文檔是從服務器請求並正確傳送的。格式錯誤或非法內容當然至少是一種理論上的可能性,但是我甚至會期望組件中至少有一個導航事件,甚至在它試圖分析任何服務器正在傳輸的內容之前。我們也能夠用完全相同的HTML文檔重現成功和失敗的行爲。

所以回到我原來的問題:情況的描述可能有點薄,我不希望完成這個問題的解決方案,但有人可能至少會建議去哪裏尋找什麼和尋找什麼?我對.NET開發經驗不是太熟悉,但是由於WebBrowser可能只是IE的ActiveX組件的一個薄層,我懷疑我能夠調試到它的內部以找到導致問題的任何可能原因?

回答

0

我想我必須回答這個問題。雖然我對解決問題的方法不太滿意,但我不明白,甚至沒有理解解決方法爲什麼可行,但我們設法修改了代碼,以至於我們至少無法重現奇怪的行爲。這個技巧在調用Navigate之前調用Navigate("about:blank");與真正的URL。

我認爲解決方法解決了某種計時或併發問題。

+0

添加導航(「about:blank」)也解決了我的問題。但爲什麼呢?這是一個錯誤嗎? – 2014-06-21 21:45:12

1

CodeProject上嘗試使用此不同的webbrowser組件可能會值得您的使用......它的不同之處在於您可以使用它更多的功能。這將是一個有用的測試,以檢查它是否適用於此瀏覽器控件的擴展版本。

希望這會有所幫助, 最好的問候, 湯姆。

+0

非常感謝您的建議。即使它包裝了常規的WebBrowser控件,它似乎也暴露了更多的內部。我明天會試一試,看看它是否有幫助。 – jarnbjo 2010-02-12 00:04:06

相關問題