Windows Service Webbrowser对象无效的强制转换异常错误

时间:2010-03-01 23:38:26

标签: c# browser .net

我在使用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");

关于它为什么一直失败的任何想法?在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我使用SHDocVW.WebBrowserClass时遇到了类似的问题。当我尝试从SHDocVW.WebBrowserClass的实例(来自主线程)访问Document.all时,我得到了一个InvalidCastException,并且我能够通过转换为IHTMLDocument2而不是HTMLDocument来修复它。这花了我很长时间才弄明白,因为转换为HTMLDocument大部分时间都在工作。

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

我希望这有助于某人。

答案 1 :(得分:0)

我不确定这是否解决了问题,但您可以检查当前对象或WebBrowser.InvokeRequired上的InvokeRequired属性,并使用类似MethodInvoker的方法来调用您的函数或帮助函数来访问WebBrowser.Document。 / p>

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