Cookie

書き込み
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がメモリ上に格納されています。