2009-06-26 4 views
9

Я хотел бы создать приложение .NET, которое использует несколько экземпляров элемента управления WebBrowser. Уловка в том, что я бы хотел, чтобы каждый элемент управления веб-браузером выполнял собственный сеанс. IOW, у меня есть требование, чтобы коллекция файлов cookie сеансов, глобального пространства имен javascript и т. Д. Была отдельной для каждого экземпляра и что все экземпляры отображаются в одном окне.Несколько сеансов/процессов WebBrower в одном окне

AFAIK, это потребует от меня запускать каждый элемент управления веб-браузером в отдельном процессе.

Несколько вопросов:

  1. ли мое предположение о нескольких процессах требуется быть правильно?
  2. Возможно ли, чтобы каждый экземпляр WebBrowser в одном приложении Windows Forms работал в отдельном процессе?

Заранее спасибо ...

+0

Привет, я вижу, на это дается ответ, но как вы справились? Я создал приложения VB6 (в моем случае), которые используют компонент WebBrowser, и они по-прежнему используют один и тот же сеанс. Dunno, если я должен опубликовать другой вопрос. – Vlagged

ответ

9

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

Вы можете запускать каждый элемент управления на COM-сервере вне процесса или в новом экземпляре приложения, если это необходимо.

+0

У меня такая же потребность в OP, но в моем кармане нет решения. Я попытался поместить элемент управления 'WebBrowser' в мою форму: они используют один и тот же сеанс, я знаю (это печально, но я знаю). Проблема даже в запуске нескольких экземпляров моего приложения, они по-прежнему имеют один и тот же сеанс: я думаю, это связано с тем, что процесс Internet Explorer по-прежнему остается прежним. У вас есть совет? Спасибо – Marco

+2

Сеансы управления веб-браузером изолированы процессом; если вы видите какой-то «обмен», это означает, что существует постоянный (несеансный) cookie. – EricLaw

2

Это можно сделать, если вы можете получить доступ к файлу хостов ([Windows]/system32/drivers/etc/hosts).

Просто поместите что-то вроде этого в файл хостов:

127.0.0.1 web1 
127.0.0.1 web2 
127.0.0.2 web3 
... 

(замените IP-адрес с вашего IP-адрес сервера), а затем вы можете указать ваши многочисленные экземпляры WebBrowser к, например http://web1/.. и т. Д. Каждый экземпляр WebBrowser будет запускать отдельный сеанс. Он работает нормально. Недостатком является то, что вам необходимо (программно) управлять файлом hosts, что также может быть проблемой безопасности.

Смежные вопросы