2009-06-26 13 views
9

Ich möchte eine .NET-Anwendung erstellen, die mehrere Instanzen des WebBrowser-Steuerelements verwendet. Der Nachteil ist, dass ich möchte, dass jeder Webbrowser eine eigene Sitzung ausführt. IOW, ich habe eine Anforderung, dass die Sammlung von Sitzungscookies, globalem JavaScript-Namespace usw. für jede Instanz separat ist und dass alle Instanzen innerhalb desselben Fensters angezeigt werden.Mehrere WebBrower-Sitzungen/-Prozesse in einem Fenster

AFAIK, dies wird erfordern, dass ich jedes Webbrowser-Steuerelement in einem separaten Prozess ausführen.

Ein paar Fragen:

  1. Ist meine Annahme über mehrere Prozesse korrekt sind erforderlich?
  2. Kann jede WebBrowser-Instanz in einer einzelnen Windows Forms-App in einem separaten Prozess ausgeführt werden?

Vielen Dank im Voraus ...

+0

Hallo, ich sehe, das ist beantwortet, aber wie hast du es geschafft? Ich habe VB6 (in meinem Fall) Anwendungen erstellt, die die WebBrowser-Komponente verwenden, und sie teilen immer noch dieselbe Sitzung. Weiß nicht ob ich noch eine Frage stellen sollte .. – Vlagged

Antwort

9

Derzeit ist keine, Sie Isolierung dieser Art nicht implementieren können in einem anderen Prozess der Steuerung von Webbrowser verwenden, ohne jede Instanz zu setzen.

Sie können jedes Steuerelement in einem Out-of-Process-COM-Server oder einer neuen Instanz Ihrer Anwendung gegebenenfalls ausführen.

+0

Ich habe gleich OP nötig, aber keine Lösung in meiner Tasche. Ich habe versucht, ein "WebBrowser" -Steuerelement in meine Form zu bringen: Sie teilen dieselbe Sitzung, ich weiß (es ist traurig, aber ich weiß). Problem läuft sogar mehrere Instanzen meiner App, sie teilen immer noch die gleiche Sitzung: Ich denke, das ist, weil der Internet Explorer-Prozess immer noch der gleiche ist. Hast du einen Ratschlag? Danke – Marco

+2

Web Browser Controls Sitzungen sind isoliert von Prozess; Wenn Sie eine Art "Teilen" sehen, bedeutet dies, dass ein persistenter (Nicht-Session-) Cookie vorhanden ist. – EricLaw

2

Dies ist möglich, wenn Sie auf die Hosts-Datei ([Windows]/system32/drivers/etc/hosts) zugreifen können.

Einfach so etwas wie dies in der Hosts-Datei:

127.0.0.1 web1 
127.0.0.1 web2 
127.0.0.2 web3 
... 

(die IP-Adresse mit Ihrem Server ip ersetzen) und dann können Sie Ihre mehrere Instanzen von WebBrowser zu z.B. Punkt http://web1/.. usw. Jede Instanz des WebBrowsers wird eine separate Sitzung ausführen. Es funktioniert gut. Der Nachteil ist, dass Sie die Hosts-Datei (programmatisch) verwalten müssen, was ebenfalls ein Sicherheitsproblem darstellen könnte.

Verwandte Themen