【问题标题】:Multiple WebBrower sessions / processes in one window一个窗口中的多个 WebBrowser 会话/进程
【发布时间】:2009-06-26 21:30:49
【问题描述】:

我想创建一个使用多个 WebBrowser 控件实例的 .NET 应用程序。问题是我希望每个 Web 浏览器控件都运行它自己的会话。 IOW,我要求会话 cookie、javascript 全局命名空间等的集合对于每个实例都是独立的,并且所有实例都出现在同一个窗口中。

AFAIK,这将要求我在单独的进程中运行每个 Web 浏览器控件。

几个问题:

  1. 我关于需要多个进程的假设是否正确?
  2. 是否可以使单个 Windows 窗体应用程序中的每个 WebBrowser 实例在单独的进程中运行?

提前谢谢...

【问题讨论】:

  • 你好,我看到这个已经回答了,但是你是怎么解决的?我创建了使用 WebBrowser 组件的 VB6(在我的情况下)应用程序,它们仍然共享同一个会话。不知道我是否应该发布另一个问题..

标签: .net winforms internet-explorer webbrowser-control


【解决方案1】:

目前,不,如果不将每个实例放在不同的进程中,您就无法使用 Web 浏览器控件实现这种隔离。

如果合适,您可以在进程外 COM 服务器或应用程序的新实例中运行每个控件。

【讨论】:

  • 我有同样的 OP 需求,但我的口袋里没有解决方案。我尝试在我的表单中添加一些WebBrowser 控件:他们共享同一个会话,我知道(这很可悲,但我知道)。问题甚至是运行我的应用程序的多个实例,它们仍然共享同一个会话:我认为这是因为 Internet Explorer 进程仍然相同。你有什么建议吗?谢谢
  • Web Browser Controls 的会话被进程隔离;如果您看到某种“共享”,则表示存在持久(非会话)cookie。
  • 如果IE进程可以用iexplore.exe -private -nomerge启动,cookies也许可以处于隔离模式。
【解决方案2】:

如果您可以访问主机文件 ([Windows]/system32/drivers/etc/hosts),则可以这样做。

只需将这样的内容放入 hosts 文件中即可:

127.0.0.1 web1
127.0.0.1 web2
127.0.0.2 web3
...

(将 ip 地址替换为您的服务器 ip)然后您可以将 WebBrowser 的多个实例指向例如http://web1/..等 WebBrowser 的每个实例都将运行一个单独的会话。它工作正常。缺点是您需要(以编程方式)管理主机文件,这也可能是一个安全问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2023-04-04
    相关资源
    最近更新 更多