2009-06-26 16 views
9

Me gustaría crear una aplicación .NET que utilice varias instancias del control WebBrowser. El problema es que me gustaría que cada control del navegador web ejecute su propia sesión. IOW, tengo el requisito de que la recopilación de cookies de sesión, el espacio de nombres global de JavaScript, etc., sea independiente para cada instancia y que todas las instancias aparezcan dentro de la misma ventana.Múltiples sesiones/procesos de WebBrower en una ventana

AFAIK, esto me va a requerir que ejecute cada control del navegador web en un proceso separado.

algunas preguntas:

  1. se está requiriendo correcta mi suposición sobre múltiples procesos?
  2. ¿Es posible hacer que cada instancia de WebBrowser en una sola aplicación de Windows Forms se ejecute en un proceso separado?

Gracias de antemano ...

+0

Hola, veo que esto se responde, pero ¿cómo te las arreglaste? Creé aplicaciones VB6 (en mi caso) que usan el componente WebBrowser y aún comparten la misma sesión. No sé si debería publicar otra pregunta. – Vlagged

Respuesta

9

Actualmente, no, no se puede poner en práctica el aislamiento de este tipo mediante el control de explorador Web sin poner cada instancia en un proceso diferente.

Puede ejecutar cada control en un servidor COM fuera de proceso o una nueva instancia de su aplicación, si corresponde.

+0

Estoy teniendo la misma necesidad de OP, pero no hay solución en mi bolsillo. Intenté poner un control 'WebBrowser' en mi forma: comparten la misma sesión, lo sé (es triste, pero lo sé). El problema es que incluso se ejecutan varias instancias de mi aplicación, todavía comparten la misma sesión: creo que esto se debe a que el proceso de Internet Explorer sigue siendo el mismo. ¿Tienes algún consejo? Gracias – Marco

+2

Las sesiones de los controles del navegador web están aisladas por proceso; si está viendo algún tipo de "compartir" eso significa que hay una cookie persistente (sin sesión). – EricLaw

2

Es posible hacerlo si puede acceder al archivo hosts ([Windows]/system32/drivers/etc/hosts).

sólo hay que poner algo como esto en el archivo hosts:

127.0.0.1 web1 
127.0.0.1 web2 
127.0.0.2 web3 
... 

(sustituir la dirección IP con la dirección IP del servidor) y luego se puede escribir en varias instancias de WebBrowser para, por ejemplo, http://web1/.., etc. Cada instancia de WebBrowser ejecutará una sesión separada. Funciona bien. La desventaja es que necesita (programáticamente) administrar el archivo de hosts, lo que también podría ser un problema de seguridad.

Cuestiones relacionadas