c # filenotfoundexception в веб-браузере? - PullRequest
1 голос
/ 19 января 2011
if (webBrowser1.DocumentText.IndexOf("Page: 1") != -1)

в приведенной выше строке я получаю это исключение

System.IO.FileNotFoundException is nothandled Message = "Система не может найти указанный файл. (Исключение из HRESULT: 0x80070002)"
Source = "System.Windows.Forms"
StackTrace: в System.Windows.Forms.UnsafeNativeMethods.IPersistStreamInit.Save (IStream pstm, Boolean fClearDirty) в System.Windows.Forms.WebBrowser.get_DocumentStream (в).Windows.Forms.WebBrowser.get_DocumentText () в WindowsFormsApplication1.Form1.GenerateETGWorklists () в C: \ Documents and Settings \ agordon \ Мои документы \ Visual Studio 2008 \ Projects \ GenerateWorklists \ GenerateWorklists \ Form1.cs: строка 603 в WindowsFormsApplication.Form1.btnProcess_Click (Отправитель объекта, EventArgs e) в C: \ Documents and Settings \ agordon \ Мои документы \ Visual Studio 2008 \ Projects \ 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.pps) для System.Windows.Forms.Windows.Forms.Windows.Forms.Windows.FormsW.Windows.FormsW.Windows.FormsW.Windows.Forms.Windows.FormsW.Windows.FormsW. Forms.Windows.FormsW.Windows) forms.Windows.FormsW. Forms.Windows.FormsW. Forms.Windows.FormsW.Windows) forms.Windows.FormsWW)..ComponentManager.System.Windows.Application.ThreadContext.RunMessageLoop (причина Int32, ApplicationContext context) в System.Windows.Forms.Application.Run (Form mainForm) в WindowsFormsApplication1.Program.Main () в C: \ Documents and Settings \ agordon \ Мои документы \ Visual Studio 2008 \ Projects \ GenerateWorklists \ GenerateWorklists \ Program.cs: строка 18 в System.AppDomain._nExecuteAssembly (сборка Assembly, аргументы String []) в System.AppDomain.ExecuteAssembly (String assemblyFile, доказательство assemblySecurity, аргументы String []) в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly (System.что это значит?я не получил эту ошибку вчера и получил сегодня.веб-страница открывается без проблем, и текст Page: 1 определенно там.

Здесь аналогичная проблема также без решения http://bytes.com/topic/c-sharp/answers/657812-webbrowser-documenttext-getting-problem

Ответы [ 3 ]

1 голос
/ 19 января 2011

это известная ошибка, и Microsoft, по крайней мере, ничего с этим не делает.вот исправление:

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

теперь мы можем получить доступ к DocumentText без проблем

не забудьте импортировать mshtml как ссылку

0 голосов
/ 12 декабря 2013

Мне тоже показалось странным, что элемент управления веб-браузера выдавал исключение, связанное с доступом к файлу, когда я загружал страницу из Интернета.

При просмотре этого я заметил нечто странное: эта ошибкагораздо реже, когда временные интернет-файлы были недавно очищены.

Я изменил свое приложение так, чтобы оно автоматически очищало временные интернет-файлы при запуске приложения, чего было достаточно для устранения 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
0 голосов
/ 19 января 2011

Попробуйте webBrowser1.Document.Body.InnerText.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...