2010-03-01 73 views
4

我有一點麻煩與Windows服務WebBrowser對象。它試圖在用戶名和密碼到網站的值來加載,但一直未能和投擲以下錯誤:Windows服務WebBrowser對象無效轉換異常錯誤

System.InvalidCastException: Specified cast is not valid. at System.Windows.Forms.UnsafeNativeMethods.IHTMLDocument2.GetLocation() at System.Windows.Forms.WebBrowser.get_Document() at MyWindowsService.MyDataProcessor.login()

,我使用,使這個調用的代碼是:

MyWebBrowser.Document.All["Login"].SetAttribute("Value", username); 
      MyWebBrowser.Document.All["Password"].SetAttribute("Value", password); 
      MyWebBrowser.Document.All["submit"].InvokeMember("Click"); 

任何想法,爲什麼它一直失敗?先謝謝您的幫助。

+1

所以,我想我已經找到了問題所在。 WebBrowser對象中存在一個錯誤,該錯誤阻止DocumentCompleted在不可見的情況下觸發,這是Windows Service的一個重點。 (這裏有一個鏈接:http://support.microsoft.com/kb/259935) 我如何去糾正呢?我很想繼續使用WebBrowser對象,因此我不必重寫所有內容,但不知道如何使其在Windows服務中可見。謝謝。 – 2010-03-24 17:15:22

回答

0

我不確定這是否解決了問題,但可以檢查當前對象或WebBrowser.InvokeRequired的InvokeRequired屬性,並使用類似MethodInvoker的方法調用您的函數或輔助函數來訪問WebBrowser.Document。

http://www.megasolutions.net/cSharp/(WebBrowser_Document-==-null)-throws-InvalidCastException-43126.aspx

+0

林不知道它山姆看到的Axl:的答案,但調用,事情似乎是答案。我有同樣的問題,發現這個:http://stackoverflow.com/questions/315938/webbrowser-document-cast-not-valid/318538#318538。這解決了我的問題=) – Ted 2010-11-05 01:22:27

1

我使用SHDocVW.WebBrowserClass有類似的問題。我有一個InvalidCastException當我試圖從SHDocVW.WebBrowserClass實例訪問的document.all(主線程),我能夠通過強制轉換的IHTMLDocument2而不是HTMLDocument的解決它。這讓我花了很長時間才發現,因爲大部分時間都投射到HTMLDocument。

SHDocVW.WebBrowserClass Explorer = [instance of IE]; 
((IHTMLDocument2)Explorer.Document).all // works all the time 
((HTMLDocument)Explorer.Document).all // works some times 

我希望這可以幫助別人。