C#

クッキーの操作について

クッキーの書き換え

    string val = Reuqest.Cookies[key].Value;	// string key
    Response.Cookies.Remove(key);
    Request.Cookies.Remove(key);
    Response.Cookies[key].Value = val + "0123";

Response.Cookies[key]を参照すると、Response.Cookiesにkeyがなければ勝手に作成され、さらにRequest.Cookiesにその参照がなければ追加されます。この場合のRequest.Cookies[key].ValueおよびResponse.Cookies[key].Valueは共にnullになっています。予めRequest.Cookiesからkeyを削除しておかないとkeyが重複して、このあとRequest.Cookiesから正しくkeyを読み取ることができなくなります。もちろんクライアントに送信し、クライアントから送り返された直後ならRequest.Cookiesは重複しない正しい値を持っていますが、繰り返しクッキーの値を変更するような場合には上の手順を踏まなければならないでしょう。

CookieCollection.Remove()メソッドはコレクションからキーを削除するだけで、クライアントのブラウザからクッキーを削除するわけではありません。

クッキーの削除

    Response.Cookies[key].Expires = DateTime.Now.AddDays(-1);

実際にクライアントのクッキーがいつ削除されるのかはブラウザ依存ですが、クライアントは期限切れのクッキーをサーバに送信しないので、クッキーの期限を1日前にすると削除したことになります。