2014-09-05 172 views
3

我已經在stackoverflow上看到了ASP.NET MVC C#中的持久性cookie示例。 但我不明白爲什麼下面的代碼不起作用。C#持久性cookie

首先,我寫的cookie:

HttpCookie cookie = new HttpCookie("AdminPrintModule"); 
cookie.Expires = DateTime.Now.AddMonths(36); 

cookie.Values.Add("PrinterSetting1", Request.QueryString["Printer1"]); 
cookie.Values.Add("PrinterSetting2", Request.QueryString["Printer2"]); 
cookie.Values.Add("PrinterSetting3", Request.QueryString["Printer3"]); 

Response.Cookies.Add(cookie); 

我看到存儲在Internet Explorer中的cookie。內容看起來不錯。

然後閱讀代碼:

HttpCookie cookie = Request.Cookies["AdminPrintModule"]; 
test = cookie.Values["PrinterSetting2"].ToString(); 

的cookie變量保持空。在測試變量中存儲PrinterSetting2值失敗。

我不知道我在做什麼錯,因爲這或多或少是一個複製粘貼從這裏的例子在stackoverflow。爲什麼我無法從Cookie中讀取PrinterSetting2值?

回答

1

嘗試用下面的代碼: -

if (Request.Cookies["AdminPrintModule"] != null) 
{ 
    HttpCookie cookie = Request.Cookies["AdminPrintModule"]; 
    test = cookie["PrinterSetting2"].ToString(); 
} 

看一看這個文件http://www.c-sharpcorner.com/uploadfile/annathurai/cookies-in-Asp-Net/: -

下面是幾種類型的寫入和讀取的cookie: -

非堅持Cookie - 曲奇已過期時間這稱爲 非持續Cookie

如何創建一個cookie?它很容易創建的 Asp.Net一個cookie與Response對象的幫助或的HttpCookie

例1:

HttpCookie userInfo = new HttpCookie("userInfo"); 
    userInfo["UserName"] = "Annathurai"; 
    userInfo["UserColor"] = "Black"; 
    userInfo.Expires.Add(new TimeSpan(0, 1, 0)); 
    Response.Cookies.Add(userInfo); 

例2:

Response.Cookies["userName"].Value = "Annathurai"; 
    Response.Cookies["userColor"].Value = "Black"; 

如何檢索從cookie?

它通過請求 對象的幫助檢索cookie值形式廚師的簡單方法。例1:

string User_Name = string.Empty; 
    string User_Color = string.Empty; 
    User_Name = Request.Cookies["userName"].Value; 
    User_Color = Request.Cookies["userColor"].Value; 

例2:

string User_name = string.Empty; 
    string User_color = string.Empty; 
    HttpCookie reqCookies = Request.Cookies["userInfo"]; 
    if (reqCookies != null) 
    { 
     User_name = reqCookies["UserName"].ToString(); 
     User_color = reqCookies["UserColor"].ToString(); 
    } 
+0

我知道這可以防止失敗,但它不能解決我從Cookie中讀取PrinterSetting2值的問題。爲什麼我不能讀取這個值? – Walt501 2014-09-05 10:36:59

+0

我已經更新了我的答案看看@ Walt501 – Neel 2014-09-05 10:41:39

+0

而不是將值[「」]嘗試像我在我的例子中所做的一樣@ Walt501 – Neel 2014-09-05 10:42:36

0

你必須確保你有Request.QueryString.Just值來檢查你的代碼工作的餅乾硬編碼值,然後從cookie中讀取。

+0

我可以用記事本檢查cookie的內容。這些值按預期存儲。但我似乎無法閱讀它們。 – Walt501 2014-09-05 11:01:54

+0

我已經複製你的代碼,它工作正常,我可以從cookie中讀取值。 – Mairaj 2014-09-05 11:10:57