2010-02-03 71 views
14

¿Cómo puedo resolver este error?Cómo corregir "El recurso solicitado está en uso. (Excepción de HRESULT: 0x800700AA)"

"El recurso solicitado está en uso. (Excepción de HRESULT: 0x800700AA)".

Esto presenta durante la navegación a un sitio web diferente utilizando el control WebBrowser en C# .NET. ¿Por qué?

+0

¿Cómo está usando WebBrowser? ¿Estás navegando a través de la interacción del usuario o mediante programación? ¿Podría publicar algún código que muestre cómo se inicializó la navegación? –

+0

¿Cuándo obtienes el arror? ¿Hay algún cuadro de mensaje en el navegador? –

+1

DocumentComplete se genera una vez por cuadro antes de una última vez para la página. ¿Hay marcos en la página? –

Respuesta

11

El control WebBrowser se considera "en uso" si actualmente se está procesando una acción de navegación o si cualquier diálogo de bloqueo del control está actualmente abierto (incluyendo menú contextual, alertas de Javascript, diálogo de inicio de sesión de NTLM, etc.). Puede usar la propiedad WebBrowser.IsBusy para detectar estos estados.

Si debido a una acción de navegación actualmente incompleta, puede intentar detener la navegación actual (si realmente desea detenerla cuando la página no está cargada) o agregar la nueva navegación a una cola de solicitud y usar un temporizador para espere hasta que WebBrowser.IsBusy devuelva falso.

Si en cambio el estado ocupado se debe a uno o más diálogos de bloqueo abiertos, puede hacer la misma técnica de espera y quizás Messagebox.Show() el usuario un mensaje que la navegación pendiente se retrasa debido a una ventana de diálogo abierta.

+5

¿Cómo podemos "detener la navegación actual"? – Blaise

+1

@Blaise Consulte [WebBrowser.Stop Method] (http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.stop (v = vs.110) .aspx) y http://stackoverflow.com/questions/6526876/how-to-cancel-or-dispose-current-navigation-at-webbrowser-element – Lijo

+0

Esta respuesta ha salvado mi tocino hoy, gracias – SSS

1
bool go = false; 
string SiteContent1 = string.Empty; 
string SiteContent2 = string.Empty; 
int index = 0; 
WebBrowser wb = new WebBrowser(); 

    void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 

     try 
     { 
      if (go) 
      { 
       SiteContent2 = wb.DocumentText; 
       // Code to compare to contents of the webbrowser 
       index++; 
       go = false; 
       steps = 1; 
      } 

      if (!go) 
       { 

        if (index >= TotalSiteCount) 
        { 
         Stop(); 
        } 
        else if (steps == 1) 
        { 
         wb.Navigate(UrltocompareList[index].Url1); 

        } 
        else if (steps == 2) 
        { 
         SiteContent1 = wb.DocumentText; 
         wb.Navigate(UrltocompareList[index].Url2); 
         go = true; 
        } 
        steps++;       
       } 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 

     } 

    } 

UrltocompareList es un conjunto de 2 sitios para comparar.
TotalSiteCount es la cantidad de elementos en UrltocompareList.
El formulario hereda IOleClientSite para eliminar medios como imágenes, videos y ninguna descarga de X activa para tener un tiempo de procesamiento más rápido en el control de webbrowser.

Utilizo este método en lugar de system.net.webclient para obtener el html de una página web y luego compararlos.
Recibí este error cuando toca el método wb.Navigate.

+0

Por favor, edite la pregunta si tiene más información –

2

Tuve este mismo problema. Llamar a WebBrowser.Stop() no ayudó, y WebBrowser.IsBusy nunca se volvió falso.

Resulta que si la página crea ningún tipo de diálogo (alert() ventanas emergentes, errores de javascript, ventanas emergentes de NTLM de inicio de sesión, etc.) no se puede navegar fuera de la página hasta que se cierra el diálogo.

Mi solución fue evitar que los cuadros de diálogo se muestren en primer lugar. Apparently prevenir todas estas ventanas emergentes es simple; simplemente configure

webBrowser.ScriptErrorsSuppressed = true; 
+1

Si evita las ventanas emergentes de inicio de sesión de NTLM ... no lo hace que impiden que el usuario pueda pasar un proxy, por ejemplo? –

+0

Confirmé que la configuración 'webBrowser.ScriptErrorsSuppressed = true' no mostrará la solicitud de inicio de sesión de NTLM. En nuestro caso, eso significaba que no podíamos pasar al proxy para acceder a un sitio web externo, por lo que esta solución no nos funcionó. –

+0

Este error también puede ocurrir si uno intenta establecer '.DocumentText' mientras el menú contextual al que se ha hecho clic está actualmente abierto. Puede verificar fácilmente este estado marcando la propiedad 'WebBrowser.IsBusy'. Devuelve correctamente False o True dependiendo de si el control está listo para aceptar o no la navegación nueva (respectivamente). –

0

Esto se puede resolver con bastante facilidad. Este error ocurre cuando el navegador realiza una acción mientras ya está realizando una acción. Por ejemplo, está navegando hacia algún sitio web mientras hace clic derecho en el navegador web. Para solucionar esto, yo hice lo siguiente:

//if my webbrowser isn't performing any actions 
if(!myWebBrowser.IsBusy) 
{ 
    //Navigate 
    myWebBrowser.Navigate("http://www.google.com"); 
} 
0

primer intento

1- favor cheque de URL Navegar (si marca, por favor revisar la carpeta de nuevo compilado)

2- Eliminar WebBrowser Control y Agregar nuevo

Me olvide copiar el archivo original App.Path + "\ error.html" y vea este problema.

Método Garantía

que corregir este error en VB6

Añadir WebBrowserControl wb (0) (Nombre wb, índice = 0)

Y antes incluso navegar

For i = 1 To wb.UBound 

    Unload wb(i) 

Next 

Load wb(1) 

wb(0).Visible = False 

wb(1).Visible = true 

wb(1).Navigate URL 
1

Un problema con el que me encontré al ejecutar pruebas de flujo de espectros con watin en Windows 10 es que Win10 usa MS Edge por defecto, así que tuve nunca se abrió IE, y cuando watin comenzó, IE se atascó en la solicitud de utilizar la configuración predeterminada. Seleccionar opciones, cerrar navegador y ejecutar pruebas otra vez funcionó para mí.

Algo para ver

Cuestiones relacionadas