2009-06-26 13 views
9

Vorrei creare un'applicazione .NET che utilizzi più istanze del controllo WebBrowser. Il problema è che mi piacerebbe che ogni controllo del browser Web eseguisse la propria sessione. IOW, ho il requisito che la raccolta di cookie di sessione, spazio dei nomi globale javascript, ecc. Sia separata per ogni istanza e che tutte le istanze vengano visualizzate all'interno della stessa finestra.Più sessioni/processi WebBrower in una finestra

AFAIK, questo richiederà di eseguire ciascun controllo del browser Web in un processo separato.

alcune domande:

  1. è la mia ipotesi circa i processi multipli che siano necessarie corretta?
  2. È possibile far sì che ciascuna istanza di WebBrowser in un'unica app Windows Form venga eseguita in un processo separato?

Grazie in anticipo ...

+0

Ciao, vedo che questa risposta ha, ma come hai fatto? Ho creato su VB6 (nel mio caso) applicazioni che utilizzano il componente WebBrowser e condividono ancora la stessa sessione. Non so se dovrei pubblicare un'altra domanda .. – Vlagged

risposta

9

Attualmente, no, non si può implementare l'isolamento di questo tipo utilizzando il controllo Browser Web senza mettere ogni istanza in un altro processo.

È possibile eseguire ciascun controllo in un server COM out-of-process o in una nuova istanza dell'applicazione, se necessario.

+0

Sto avendo lo stesso bisogno OP, ma nessuna soluzione nella mia tasca. Ho provato a mettere un po 'il controllo di 'WebBrowser' nella mia forma: condividono la stessa sessione, lo so (è triste, ma lo so). Il problema è anche l'esecuzione di più istanze della mia app, condividono comunque la stessa sessione: penso che questo sia dovuto al fatto che il processo di Internet Explorer è sempre lo stesso. Hai qualche consiglio? Grazie – Marco

+2

Le sessioni dei controlli del browser Web sono isolate per processo; se stai vedendo una sorta di "condivisione" significa che c'è un cookie persistente (non di sessione). – EricLaw

2

È possibile farlo se è possibile accedere al file hosts ([Windows]/system32/drivers/etc/hosts).

Basta mettere qualcosa di simile nel file hosts:

127.0.0.1 web1 
127.0.0.1 web2 
127.0.0.2 web3 
... 

(sostituire l'indirizzo IP con il vostro IP del server) e poi si può puntare il più istanze del browser web per esempio http://web1/.., ecc. Ogni istanza di WebBrowser eseguirà una sessione separata. Funziona bene. Lo svantaggio è che è necessario (programmaticamente) gestire il file hosts, che potrebbe essere anche un problema di sicurezza.

Problemi correlati