2011-01-19 64 views
1
if (webBrowser1.DocumentText.IndexOf("Page: 1") != -1) 
上述線

我收到此異常c#filenotfoundexception在webbrowser上?

System.IO.FileNotFoundException是= 未處理消息「不 找到該文件中指定的系統可以(從HRESULT異常 :0x80070002)」
源= 「System.Windows.Forms的」
堆棧跟蹤: 在System.Windows.Forms.UnsafeNativeMethods.IPersistStreamInit.Save(的IStream PSTM,布爾fClearDirty) 在System.Windows.Forms.WebBro wser.get_DocumentStream() 在System.Windows.Forms.WebBrowser.get_DocumentText() 在WindowsFormsApplication1.Form1.GenerateETGWorklists() 在C:\ Documents和 設置\ agordon \我的文檔\ Visual Studio的 2008年 \項目\ GenerateWorklists \ GenerateWorklists \ Form1.cs中:行在WindowsFormsApplication1.Form1.btnProcess_Click(對象 發件人,EventArgs e)如C:\文件 和設置\ agordon \我 文檔\的Visual Studio 2008 \項目\ GenerateWorklists \ GenerateWorklists \ Form1.cs:行 at 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(消息& 米,MouseButtons按鈕,點擊的Int32) 在System.Windows.Forms.Control.WndProc(消息& 米) 在System.Windows.Forms.ButtonBase.WndProc(消息& 米) 在System.Windows.Forms的。 Button.WndProc(Message & m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessa GE(消息& 米) 在System.Windows.Forms.Control.ControlNativeWindow.WndProc(消息& 米) 在System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr的 的HWND,MSG的Int32,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) at System.Windows.Forms.Application.ThreadContext.RunMess ageLoopInner(的Int32 原因,ApplicationContext的上下文) 在System.Windows.Forms.Application.ThreadContext.RunMessageLoop(的Int32 原因,ApplicationContext的上下文) 在System.Windows.Forms.Application.Run(表格 的MainForm) 在WindowsFormsApplication1。 Program.Main() 在C:\ Documents和 設置\ agordon \我的文檔\ Visual Studio的 2008年 \項目\ GenerateWorklists \ GenerateWorklists \的Program.cs:行在System.AppDomain。_nExecuteAssembly(大會 組件,字串[] args) 在System.AppDomain.ExecuteAssembly(字符串 assemblyFile,證據 assemblySecurity,字串[] args) 在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在的System.Threading .ThreadHelper.ThreadStart_Context(對象 狀態) 在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

+0

什麼是'WebBrowser`顯示? – SLaks 2011-01-19 16:26:30

+0

你需要檢查文件是否仍然在你的代碼調用它的地方,沒有其他進程使用該文件,並且privelages仍然允許這樣寫和讀取文件 – 2011-01-19 16:28:55

回答

1

這是一個已知的bug,微軟對vs2008至少沒有做任何事情。這裏有一個修復:

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

現在我們可以訪問DocumentText沒有問題

不要忘記導入mshtml作爲參考

0

嘗試webBrowser1.Document.Body.InnerText

0

我也覺得很奇怪,在Web瀏覽器控件被拋出異常有關當我從網絡加載一個頁面的時候訪問文件。

當看着這個時,我注意到一些奇怪的東西: 當臨時Internet文件最近被清除時,這個錯誤是不常見的。

我修改了我的應用程序,以便在應用程序啓動時自動清除臨時Internet文件,這足以解決這些錯誤的90%。

我的清除臨時Internet文件的代碼如下...我不認爲這適用於所有操作系統 - 可能有更好的方法 - 但這適合我的需求,因爲它可以在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