2013-08-30 11 views
8

クッキーが存在するかどうかを確認するには?私はクッキーが存在する場合、それは、このコードに有効期限が切れていたかどうかを判断しようとしていた

if(HttpContext.Current.Response.Cookies["CookieName"]){ 
    Do stuff; 
} 

は、しかし涙と汗の長い時間後に私は、この行が実際に空白のクッキーを作成したり、既存の上書きされたことに気づきましたクッキーとその値空白にして0

で期限切れに私が代わりに

if (context.Response.Cookies.AllKeys.Contains("CookieName")) 
     { 
      Do stuff; 
     } 

これは、最適ないないようだ、と私は見つけるすべてのCookieを読んでやって、そのような一致を探すことでこれを解決私の最初の試みがクッキーを作りました。 誰かがクッキーに良い説明をしていますか?

答えて

16

Response.Cookiesを使用しています。それは間違っている - 彼らはブラウザに戻って送信されるクッキーです。

既存のCookieを読み取るには、Request.Cookiesを見てする必要があります。

if (context.Request.Cookies["CookieName"] != null) 
{ 
    //Do stuff; 
} 
+0

私たちは、ボタンをクリックした後に、クッキーを作成した機能を持っていました。 次に、Page_PreRender中にそのCookieの存在を確認したいと考えました。これまでのところ、クッキーはリクエストに含まれていません。新しいクッキーでレスポンスを送信していないからです。 したがって、レスポンスで最初にクッキーを検索したプロパティーを作成し、そこに何もなかった場合は、リクエストにクッキーを探します。 – Cammy

+1

本当に混乱していたのは、私が使っていた最初のif-blockがいつもクッキーを返していたということです(レスポンスから存在しないクッキーを自動的に作成しようとすると空になることもあります)。 – Cammy