2016-09-30 7 views
0

リクエスト間でASP.NETのCookieが失われる問題があります。ASPXクッキーが紛失しました

私は複数のフィルタリングチェックボックスを持つASCXコントロールを持っています。これらのチェックボックスをオン/オフにしてから、をクリックすることができます。このapplyFiltersメソッドでは、チェックボックスのオン/オフに基づいてCookieを設定しています。これを行うコードは次のとおりです。

public void setFilterCookie(string name, string val) 
    { 
     if (!String.IsNullOrEmpty(val) && (val != null && !val.Equals("-1"))) 
     { 
      if (request.Cookies[name] != null) 
      { 
       HttpCookie myCookie = new HttpCookie(name); 
       myCookie.Expires = DateTime.Now.AddDays(-2d); 
       response.Cookies.Add(myCookie); 
       request.Cookies.Remove(name); 
      } 

      HttpCookie cookie = new HttpCookie(name, val); 
      cookie.Expires = DateTime.Now.AddDays(5);   
      response.Cookies.Add(cookie); 
     } 
     else 
     { 

      if (request.Cookies[name] != null) 
      { 
       HttpCookie myCookie = new HttpCookie(name); 
       myCookie.Expires = DateTime.Now.AddDays(-2d); 
       response.Cookies.Add(myCookie); 
       request.Cookies.Remove(name); 

      } 
     } 
    } 

クッキーが設定されたら、コントロールの親コンテナからグリッドをデータバインドする必要があります。 =問題は、私はクッキーを設定していたとき、私は値が設定されて見ることができるということです

public string getCookie(string cookieName) 
    { 
     if (isNotNullOrEmpty(cookieName)) 
      return request.Cookies[cookieName].Value.ToString().Trim(); 
     else 
      return null; 
    } 

(例えばresponse.Cookies [「ドメイン」]:このデータバインド方法で、私は次のメソッドを使用してクッキーを読んでいます"5")しかし、私がそれらを読んでいるときに値は文字列が空です。

誰かが間違っていることを教えてもらえますか?

はあなたが要求クッキーを削除し、同じ名前で複数回の応答クッキーを追加すべきではない

答えて

0

ありがとうございます。これはうまくいくはずです。

public void setFilterCookie(string name, string val) 
    { 
     var cookieValue = string.Empty; 
     var expires = 0; 
     if (!string.IsNullOrWhiteSpace(val) && !val.Equals("-1")) 
     { 
      cookieValue = val; 
      expires = 5; 
     } 
     else 
     { 
      expires = -2; 
     } 

     var cookie = new HttpCookie(name, cookieValue) {Expires = DateTime.Now.AddDays(expires)}; 
     System.Web.HttpContext.Current.Response.Cookies.Add(cookie); 
    } 
+0

これは機能しません。私はまだクッキー値を失っています –