2016-09-22 18 views
-1

我想創建一個靜態類來處理我的ASP.NET網站中的cookie。 該類用c#編寫,並位於App_code文件夾中。在c#靜態類中處理cookies的問題

我的問題是,所有的時間,cookie中的更新都會刪除我之前在cookie中的值,並且未被添加。 我創建了一個簡單的代碼。

enter image description here

起初該cookie的值爲1 = A,這是良好的(正確的)。 但是在第二次運行時,當我輸入if而不是其他時,cookie的值是2 = b。

enter image description here

的結果,我要的是1 = 2 & = B

謝謝

+4

如果您需要本網站的幫助,請發佈您的代碼。不是你的代碼的圖像,因爲; 1.我們無法從圖像中獲取代碼,將其放入測試工具中進行試用。 2.絕對沒有人會花時間從圖像中重新輸入代碼來幫助你。幫你一個忙,並把實際的代碼/片段放在帖子中。 – Kevin

+0

我第二@Kevin評論。 – garfbradaz

回答

0

,讓我試着解釋一下這是怎麼回事。當您像這樣設置cookie集合「test2」的值HttpContext.Current.Response.Cookies["test2"].Values.Add("1", "a");時,您將發送新的cookie集合對象作爲新的HTTP響應流的一部分。新的HTTP響應對象不知道以前設置的名稱/值cookie項目(現在可以通過HTTP的請求對象訪問)。 要解決此問題,只需將請求對象中的Cookie添加到Response對象中的新Cookie集合即可。



    if (Request.Cookies["stackoverflow"] != null) 
    {    
     Response.Cookies["stackoverflow"].Values.Add(Request.Cookies["stackoverflow"].Values); 
     Response.Cookies["stackoverflow"].Values.Add("2", "bbbb"); 
    } 
    else 
    { 
     Response.Cookies["stackoverflow"]["1"] = "aaaaaa"; 
    } 

+0

謝謝你的回答,但問題在於請求和響應cookie在c#文件(c#class,而不是asp.net頁面)上不可用。 這就是我使用C#文件中可用的HttpConext的原因。 我正在尋找c#文件中提供的另一個解決方案。 –

+0

這是C#。您可以使用HTTPContext.Current或更短的Request.Cookies,如上例所示。只要確保在using語句中有Sytem.Web和其他名稱空間。在您的示例中,每個響應都會重置'test2'cookie集合。確保在將新值添加到test2 cookie集合之前設置舊值。 – DragoRaptor