2016-11-06 3 views
0

Мне очень любопытно, есть ли возможность в CEF Sharp, каким-то образом изолировать каждый экземпляр браузера от других экземпляров.CefSharp Wpf, Session 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 теперь добавляет поддержку полной изоляции хранения и разрешений (кэш, куки, LocalStorage, гранты доступа, и т.д.) на основе контекста запроса. Это также сейчас в CEFSharp.

Чтобы убедиться, что сеансы не совпадают между несколькими экземплярами, просто создайте новый объект RequestContextSettings, установите PersistSessionCookies и/или PersistUserPreferences в false и назначьте его вашему браузеру при создании нового RequestContext. Я не уверен, to false полностью необходимо для нескольких экземпляров, возможно, кто-то другой может дать некоторую информацию об этом.

//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 = "" –