2010-12-30 3 views
1

У меня есть следующий код C#, запущенный внутри страницы выхода из системы, с помощью кнопки «Выход». Он отлично работает на ie и ff, но не на хроме. Проблема в том, что хром не будет устанавливать cookie. Значение не отображается вообще в заголовке responce. Я прочитал несколько сообщений с подобными проблемами в сети, но не было предложено правильное решение. Любая помощь приветствуется. Спасибо за ваше время. Вот код, который работает на странице:Проблема с Chrome Cookie

public class LogOut : ExtendedControlBase 
    { 
     void RemoveCookie(string CookieName) 
     { 
      HttpCookie myCookie = new HttpCookie(CookieName); 
      myCookie.Expires = DateTime.Now.AddDays(-100); 
      Response.Cookies.Add(myCookie); 
     } 
     protected override void OnInit(EventArgs e) 
     { 
      Session.Remove("SiteUserEmail"); 
      Session.Remove("SiteUserName"); 
      Session.Remove("siteUserId"); 
      Session.Remove("siteUserGroupId"); 
      RemoveCookie("u"); 
      Response.StatusCode = 301; 
      Response.AddHeader("Location", "/"); 
      Response.Flush(); 
      Response.End(); 
     } 
    } 
+0

Вопрос: Следует ли использовать встроенный провайдер членства? –

ответ

0

Я думаю, что это связано с установкой даты истечения в прошлом. Вы пытались удалить myCookie.Expires = DateTime.Now.AddDays(-100);? Я считаю, что это все равно будет рассматриваться как cookie сеанса без этого значения, поскольку срок действия не будет установлен в будущем.

+0

correct.this является проблемой только для chrome. (Ff и т. Д. Видеть это как файл cookie истечения). Я снова ищу альтернативу для chrome.thanks. – ioannis

1

Несколько предложений:

Попробуйте использовать что-то вроде Fiddler, чтобы увидеть, что именно происходит. Я предполагаю, что на самом деле ссылка «logout» не работает на Chrome, как ожидалось.

Попробуйте установить заголовок печенья вручную:

Response.AddHeader("Set-Cookie", "u=; expires=Fri, 31-Dec-1999 23:59:59 GMT"); 

Попробуйте установить тестовые заголовки, чтобы проверить, если они действительно на проводе:

Response.AddHeader("X-Testing", "Testing"); 

Примечание: я не пробовал. Я предполагаю, что установка произвольных заголовков будет работать в Asp.Net.

Смежные вопросы