2016-11-06 348 views
0

我非常好奇,如果在CEF夏普有可能性,以某种方式将浏览器的每个实例与其他实例隔离。CefSharp Wpf,多个实例的会话Cookie

我正在创建4个浏览器实例。登录实例 立即另外登录3个其他实例。

是否有可能以某种方式实现我们从Nuget获得的当前版本?

回答

-1

只要使用此代码,它为我工作。

public MainWindow() 
    { 
     CefSharp.CefSettings settings = new CefSharp.CefSettings(); 
     settings.CachePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\CEF"; 
     CefSharp.Cef.Initialize(settings); 

     InitializeComponent(); 
     browser = new ChromiumWebBrowser("https://google.com/"); 
     browser.BrowserSettings.ApplicationCache = CefSharp.CefState.Disabled; 

    } 
+0

为什么downvote,这实际上工作? –

2

截至revision 2040,CEF现在增加了一个请求上下文的基础上存储和权限(缓存,Cookie,本地存储,访问授权等)的完全隔离支持。这现在也在CEFSharp中。

要确保多个实例之间没有会话重叠,只需创建一个新的RequestContextSettings对象,将PersistSessionCookies和/或PersistUserPreferences设置为false,并在创建新的RequestContext时将其分配给您的浏览器 - 我不确定是否设置它们对于多个实例来说完全是必要的,也许其他人可以给出一些相关信息。

//usually ChromiumWebBrowser setup goes above this 

RequestContextSettings requestContextSettings = new RequestContextSettings(); 

requestContextSettings.PersistSessionCookies = false; 
requestContextSettings.PersistUserPreferences = false; 

webBrowser.RequestContext = new RequestContext(requestContextSettings); 

这一直让我头痛一阵子,这似乎终于解决了这个问题。

+0

添加到此 - 如果我想本质上使用不同的配置文件“文件夹”为每个,所以它可以在会话之间持续 - 这将设置?谢谢 –

+0

我想我找到了。 RequestContextSettings.CachePath =“” –