2015-08-18 41 views
1

我想在ASP.NET中使用HttpCookie而不是Session使用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

感謝您的回覆,不工作,仍然返回空 –

+0

抱歉混淆,我設置帳戶ID也登錄頁面,但沒有在這裏添加。 –

+0

是因爲我在將cookie添加到響應後立即重定向 –