GetLastError возвращает успех после того, как InternetSetCookie возвращает false - PullRequest
0 голосов
/ 16 ноября 2018

Использование .NET 4.6.2, кодирование на C #

Возникла проблема только с клиентом на нескольких его машинах.Когда пользователь входит в группу локальных администраторов, все работает нормально, но когда они удаляют их из локальных администраторов, может показаться, что InternetSetCookie возвращает false, но GetLastWin32Error возвращает успех.

Я пришел к выводу, что InternetSetCookie возвращает значение false, потому что я не вижу ни одной строки выше, что может вызвать такое исключение.Но я думаю, что все возможно.

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetSetCookie(string lpszUrl, string lpszCookieName, string lpszCookieData);

private bool SetUriCookie(CookieContainer container, Uri uri, string cookieName){
    bool bRetVal = false;
    try{
        Cookie cookie = container.GetCookies(uri)[cookieName];
        string cookieValue = cookie == null ? "" : cookie.Value;
        DateTime cookieExpire = cookie == null ? DateTime.Now.AddMinutes(2) : cookie.Expires;
        string cookieData = string.Format("{0};expires={1}", cookieValue, cookieExpire.ToString("R"));
        bRetVal = InternetSetCookie(uri.ToString(), cookieName, cookieData);
        if (!bRetVal) throw new Win32Exception(Marshal.GetLastWin32Error());
    } catch (Exception e) {
        Logger.LogError(e, "Exception thrown attempting to store '{0}' cookie", cookieName);
    }
    return bRetVal;
}

Вот что зарегистрировано:

Возникло исключение при попытке сохранить файл cookie "xxxxx" Ошибка: операция успешно завершена

У меня естьпричина полагать, что cookie сохраняется, хотя API возвращает false.Я еще не подтвердил это.Любые предложения о том, как мне поступить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...