『飛秋』在ASP.NET伺服器端過程中使用WebBrowser的注意事項

來源:互聯網
上載者:User

昨天剛剛完成了一個從網頁上提取內容的ASP.NET程式。因為目標網頁內容比較複雜,所以採用了WebBrowser來代替WebClient。

 

但是,在本地寫好的程式,放到了伺服器上就停止工作了,也找不到任何異常提示……

在浪費了十幾個小時的人生之後,終於發現是因為缺少了引用的程式集——為了處理網頁上較為複雜的網頁元素,我在程式中使用了MSHTML中聲明的介面,然而不知道出於什麼樣的原因,在項目的引用列表中MSHTML被標記為不複製到本地,發布到伺服器上的時候自然也不會包含。更有趣的是,期間我編寫WinForms應用程式來檢驗程式邏輯,放到伺服器上運行時也沒有任何載入錯誤,而是單純地不能使用使用了來自MSHTML的介面的過程,害我以為是事件處理過程哪裡寫錯了……

 

另一個需要注意的事情是:

有文章指出在ASP.NET中使用WebBrowser最重要的條件是使用STA執行緒模式,然後使用System.Forms.Application.Run來建立訊息迴圈;文章中還說,對於ASP.NET來說WinForm表單是不必要的,所以System.Forms.Application.Run(new System.Forms.ApplicationContext())就可以了——但經實際測試,在Windows Server 2003 + IIS6上啟動並執行話,如果WebBrowser並沒有建立在表單上,則在發生跳轉時不會引發DocumentComplated事件;而在Windows 7+WebDev Server上是不會觀察到這種現象的。

 

 

除了WebBrowser以外,還有一些關於WinForms的發現:

在Load事件中調用Hide方法可能沒有效果,而放在Shown中就可以了——但使用者會觀察到表單一閃而過。

覆蓋SetVisibleCore可以阻止主表單顯示,但也會導致很多事件不能正常觸發。
飛秋官網:http://www.freeeim.com/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.