Использование .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.Я еще не подтвердил это.Любые предложения о том, как мне поступить?