2015-05-10 10 views
1

Этот вопрос озадачил меня в течение нескольких дней. Я не могу установить cookie с помощью CefSharp.Невозможно установить cookie: Cef.SetCookie() всегда возвращает false

Вот код блока, который я ожидал, чтобы работать (тем более, потому что это так же наивно, как может быть, за исключением явного нить переключение контекста):

Application.Current.Dispatcher.Invoke(new Action(() => 
{ 
    var settings = new CefSettings(); 
    settings.CachePath = "cookies"; 

    Cef.Initialize(settings); 

    Cef.DeleteCookies("", ""); 
    Cef.VisitAllCookies(new CookieVisitor()); // <-- doesn't get called, so assuming we've cleared all the persistent cookies here... 

    Cef.SetCookiePath("/", false); 
    Cef.VisitAllCookies(new CookieVisitor()); // <-- ok guess im paranoid... 
    var isSet = Cef.SetCookie("/", "username", 
        "testuser", "tovalrsv01", "/", 
        false, false, false, new DateTime(2020, 1, 1)); 

    Cef.VisitAllCookies(new CookieVisitor()); // <-- isSet is false, and i don't see the cookie that i created in the visited list... 
})); 

Я просто интересно, если я здесь отсутствует важная концепция. Я новичок в CefSharp и, несмотря на то, что побаловался примерами и форумами, очень возможно, что я что-то пропустил. Был бы очень признателен за любые идеи или указатели!

ответ

4

Argggh! Я понял это после большего количества проб и ошибок. Столб на этом сайте помог мне в моем исследовании:

https://groups.google.com/forum/#!topic/cefsharp/SflbtatvTqQ

Попробуйте переходящее в пустой строке для домена, а не «/» или перейти в Url как «/ МойВебСайт» и домен, как «192.16. 1.6 "

Это заставило меня задуматься, были ли мои параметры файла cookie отклонены по той или иной причине. Я в конечном итоге пытаюсь установить печенье с этим Params:

var isSet = Cef.SetCookie(" http://tovalrsv01:8142/ ", "username", "testuser", "", "/", false, false, false, new DateTime(2020, 1, 1));

Указанием URL немного более строго было то, что сделал трюк. Я думаю, DNS-псевдонимы иногда недостаточно хороши. В любом случае, я собираюсь оставить этот пост в случае, если другие CefSharp ers столкнутся с аналогичной ситуацией.

0

Вот код, который я использовал под кодом, чтобы добавить cookie.

var mngr = Cef.GetGlobalCookieManager(); 
Cookie Ac = new Cookie(); 
Ac.Name = "<Cookie Name>"; 
Ac.Value = "<Value>"; 
mngr.SetCookieAsync(<URL to Navigate>, Ac); 
Смежные вопросы