2016-11-06 414 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 =「」 –