書き込み
HttpCookie cookie = new HttpCookie("id_admin_"); cookie.Value = model.id_admin_.ToString(); //cookie.Domain = ".XXXX.com"; HttpContext.Current.Response.Cookies.Add(cookie); cookie = new HttpCookie("name_admin_"); //漢字が入る場合がありますので、必ずエンコードしてください。 cookie.Value = HttpUtility.UrlEncode(model.name_admin_); //cookie.Domain = ".XXXX.com"; HttpContext.Current.Response.Cookies.Add(cookie); cookie = new HttpCookie("guid"); cookie.Value = Guid.NewGuid().ToString(); //cookie.Domain = ".XXXX.com"; HttpContext.Current.Response.Cookies.Add(cookie);
留意点:
- ページとCookieは同じドメインに存在いていないなら、ページのところにCookieの値を取得できません。
- Domain + Path 同じのCookieはクライアントの同じファイルに格納され、「*」で分割しています。
- Cookie毎、一行目はCookieの名前、二行目は値、三行目はDomain + Pathの文字列、このCookieのブロックを示します。ほかの行にCookieのその他の情報が保存されています。
- Domainプロパティのデフォルト値は、現在URLのドメイン部分となります。Cookieを送出するページはサイトのどのディレクトリにあるかと関係ありません。
たとえば、http://www.XXXX.com/index.aspx ページにCookieを送出しても,Domainプロパティのデフォルト値はwww.XXXX.comとなります。
もちろんこの値はプログラミングによって、変更できます。 - CookieをResponseのCookieプロパティに追加すれば、Cookieをクライアントへ送信できます。
修正
直接にCookieを修正することができません。修正したい場合、同じ名前のCookieを作成し、クライアント上の古いCookieを上書きする方法で、値を修正します。
呼び出し
HttpContext.Current.Request.Cookies["guid"].Value
留意点:
- Domain と Pathプロパティが読み込めません。Domainはいつも「 “”」 で、Pathはいつも「 /」 であります。
削除
Asp.netでCookieをクリアします。CookieはクライアントのPCに格納されていますので、直接に削除することができませんが、ブラウザに頼んで、削除することができます。
削除する方法は、Cookieの有効期間を前に設定したら、“削除”できます。
HttpCookie aCookie; string cookieName; int limit = Request.Cookies.Count; for (int i = 0; i < limit; i++) { cookieName = Request.Cookies[i].Name; aCookie = new HttpCookie(cookieName); //Cookieの有効期間を一日前にすることによって、Cookieを無効にすることができます。 aCookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(aCookie); }
まとめ
- エンドユーザーのPC上に格納するから、削除、有効期間きれの限りにずっと有効です。
- Expiresプロパティを設定しないなら、セッション情報の一部になり、ブラウザプロセス/セッションと同じライフタイムとなります。
ブラウザと閉じる際に、Cookieがクリアされます。Cookieがメモリ上に格納されています。