2011-12-22 12 views
0

ページのバックエンドにあるプロパティを使用してCookieを設定しようとしていますが、奇妙な結果が出ています。クッキーを使用する正しい方法です。ASP.Net(c#)でプロパティとしてCookieを使用する方法

とにかくこれを処理する方法や、既に済んでいる例について、あなたが考えているなら、私は応答に感謝します。 ありがとう。

int CurrentID 
    { 
     get 
     { 
      if (Request.Cookies["CurrentID"] == null) 
       Response.Cookies.Add(new HttpCookie("CurrentID", "0")); 
      return Request.Cookies["CurrentID"].Value.AsID(); 
     } 
     set 
     { 
      if (Request.Cookies["CurrentID"] != null) 
       Response.Cookies.Remove("CurrentID"); 
      Response.Cookies.Add(new HttpCookie("CurrentID", value.ToString())); 
     } 
    } 
+0

どのような「奇妙な結果」ですか? – scottm

答えて

1

を考え出し、それが最初に得た財産を取得したときにそうそう、同じ名前を持つ新しいクッキーを追加します。

おそらくしてみてください古い値だったクッキーのバージョン。

とにかく解決方法は次のとおりです。

int CurrentID 
    { 
     get 
     { 
      if (Request.Cookies["CurrentID"] != null) 
      { 
       return Request.Cookies["CurrentID"].Value.AsID(); 
      } 
      else 
      { 
       Response.Cookies.Add(new HttpCookie("CurrentID", "0")); 
       return 0; 
      } 
     } 
     set 
     { 
      if (Response.Cookies["CurrentID"] != null) 
      { 
       Response.Cookies.Remove("CurrentID"); 
       Request.Cookies.Remove("CurrentID"); 
      } 
      Response.Cookies.Add(new HttpCookie("CurrentID", value.ToString())); 
     } 
    } 
1

getterでは、リクエスト内でクッキーを返しますが、存在しない場合はリクエストで設定しません。 Reequestから削除されません、それをResponceするクッキーを追加し、その後削除するときに

if (Request.Cookies["CurrentID"] == null) 
{ 
    Response.Cookies.Add(new HttpCookie("CurrentID", "0")); 
    return 0; 
} 
return Request.Cookies["CurrentID"].Value.AsID(); 
+0

アドバイスを歓迎私はあなたが言及したものを考慮に入れて、Request.Cookiesでプロパティが設定されるたびに新しいCookieが追加されていて、同じ名前のCookieが多数含まれていることを認識しました。奇妙な結果をもたらすとにかく答えが得られました。ご協力いただきありがとうございます – Kieran

関連する問題