2015-08-18 3 views
1

Я хочу использовать HttpCookie вместо Session в ASP.NET.Использование HttpCookie вместо сеанса в C#

Я столкнулся с проблемой, когда я установил файл cookie на странице входа и перенаправил его на следующую страницу. Если я попытаюсь получить доступ к файлу cookie на следующей странице, он вернет null.

Код Войти Страница

HttpCookie loginCookie = new HttpCookie("LoginInfo"); 
loginCookie["EmailID"] = txt_email.Text; 
loginCookie.Domain = ConfigurationManager.AppSettings["SiteURL"]; 
loginCookie.Expires = DateTime.Now.AddDays(30); 
loginCookie.Secure = false; 
loginCookie.Domain = "/"; 
Response.Cookies.Add(loginCookie); 
Response.Redirect("home.aspx"); 

Главная страница Код

HttpCookie loginCookie = new HttpCookie("LoginInfo"); 
if (loginCookie["EmailID"] == null) 
{ 
    Response.Redirect("Default.aspx"); 
} 
+0

Вы дважды устанавливаете 'loginCookie.Domain'. Это правильно? –

+0

@FabioLuz, Right –

+0

Вы пытались использовать 'Request.Cookies [" LoginInfo "]' для чтения файла cookie? –

ответ

4

Вам не нужно создавать новый Cookie вместо извлечения существующего с помощью Request.Cookies

HttpCookie loginCookie = Request.Cookies["LoginInfo"]; 

См: How to: Read a Cookie - MSDN

Другая вещь, чтобы сделать, чтобы удалить настройки Domain от первого кода, Вы устанавливаете его в два раза, просто закомментируйте эти две строки.

HttpCookie loginCookie = new HttpCookie("LoginInfo"); 
loginCookie["EmailID"] = txt_email.Text; 
//loginCookie.Domain = ConfigurationManager.AppSettings["SiteURL"]; //This one 
loginCookie.Expires = DateTime.Now.AddDays(30); 
loginCookie.Secure = false; 
//loginCookie.Domain = "/"; //and This one 
Response.Cookies.Add(loginCookie); 
Response.Redirect("home.aspx"); 
+0

Спасибо за ответ, не работает, по-прежнему возвращает null –

+0

Извините за запутанность, я устанавливаю идентификатор учетной записи и на странице входа, но не добавил сюда. –

+0

Это потому, что я перенаправляю сразу после добавления cookie к ответу –

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