webbrowser上的c#filenotfoundexception?

时间:2011-01-19 16:24:39

标签: c# .net browser

if (webBrowser1.DocumentText.IndexOf("Page: 1") != -1)

在上面一行我得到了这个例外

  

System.IO.FileNotFoundException是   未处理的消息=“系统不能   找到指定的文件。 (例外   来自HRESULT:0x80070002)“
  来源= “System.Windows.Forms的”
  堆栈跟踪:          在System.Windows.Forms.UnsafeNativeMethods.IPersistStreamInit.Save(IStream)   pstm,Boolean fClearDirty)          在System.Windows.Forms.WebBrowser.get_DocumentStream()          在System.Windows.Forms.WebBrowser.get_DocumentText()          在WindowsFormsApplication1.Form1.GenerateETGWorklists()   在C:\ Documents和   设置\ agordon \ My Documents \ Visual   工作室   2008 \项目\ GenerateWorklists \ GenerateWorklists \ Form1.cs中:行   603          在WindowsFormsApplication1.Form1.btnProcess_Click(对象   发件人,EventArgs e)在C:\ Documents中   和设置\ agordon \我的   Documents \ Visual Studio   2008 \项目\ GenerateWorklists \ GenerateWorklists \ Form1.cs中:行   55          在System.Windows.Forms.Control.OnClick(EventArgs   E)          在System.Windows.Forms.Button.OnClick(EventArgs   E)          在System.Windows.Forms.Button.OnMouseUp(MouseEventArgs   mevent)          在System.Windows.Forms.Control.WmMouseUp(消息&   m,MouseButtons按钮,Int32点击)          在System.Windows.Forms.Control.WndProc(消息&   M)          在System.Windows.Forms.ButtonBase.WndProc(Message&   M)          在System.Windows.Forms.Button.WndProc(Message&   M)          在System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&   M)          在System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&   M)          在System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr   hWnd,Int32 msg,IntPtr wparam,IntPtr   LPARAM)          在System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&   MSG)          在System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32)   dwComponentID,Int32原因,Int32   pvLoopData)          在System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32)   原因,ApplicationContext上下文)          在System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32)   原因,ApplicationContext上下文)          在System.Windows.Forms.Application.Run(Form   MainForm的)          在WindowsFormsApplication1.Program.Main()   在C:\ Documents和   设置\ agordon \ My Documents \ Visual   工作室   2008 \项目\ GenerateWorklists \ GenerateWorklists \的Program.cs:行   18          在System.AppDomain._nExecuteAssembly(程序集   assembly,String [] args)          在System.AppDomain.ExecuteAssembly(String   assemblyFile,Evidence   assemblySecurity,String [] args)          在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()          在System.Threading.ThreadHelper.ThreadStart_Context(Object   州)          在System.Threading.ExecutionContext.Run(ExecutionContext   executionContext,ContextCallback   回调,对象状态)          在System.Threading.ThreadHelper.ThreadStart()   的InnerException:

这是什么意思?我昨天没有得到这个错误并且今天得到它。网页打开没有问题,文本Page: 1肯定存在。

这是一个类似的问题,也没有解决方案 http://bytes.com/topic/c-sharp/answers/657812-webbrowser-documenttext-getting-problem

3 个答案:

答案 0 :(得分:1)

这是一个已知的错误,微软至少没有为vs2008做任何事情。这是一个修复:

String lastsource = ((mshtml.HTMLDocumentClass)(((webBrowser1.Document.DomDocument)))).documentElement.innerHTML;
            webBrowser1.Document.OpenNew(true);
            webBrowser1.Document.Write(lastsource);  

现在我们可以毫无问题地访问DocumentText

不要忘记导入mshtml作为参考

答案 1 :(得分:0)

尝试webBrowser1.Document.Body.InnerText

答案 2 :(得分:0)

当我从网上加载页面时,我也发现Web浏览器控件引发了与文件访问相关的异常,这一点很奇怪。

在研究这个时,我注意到一些奇怪的事情: 最近清除了临时互联网文件后,这种错误就不那么常见了。

我修改了我的应用程序,以便在应用程序启动时自动清除临时Internet文件,这足以解决90%的错误。

我清理临时互联网文件的代码如下......我认为这不适用于所有操作系统 - 可能有更好的方法 - 但这符合我的需求,因为它适用于Server 2008。

(我的代码在vb.net中,但c#版本不应该太难理解。)

        'start cleaning the temporary internet files
        Dim clearFilesProcess As Process = System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 255")

        'wait for the temporary internet files to be deleted
        While Not (clearFilesProcess.HasExited)
            System.Threading.Thread.Sleep(200)
        End While