2017-01-21 2 views
1

ASP.NetプロジェクトでCookieを使用したいと思います。私はこのように設定されたCookie:有効期限切れのCookieがHttpCookieCollectionから返されるのはなぜですか?

HttpCookie cookie = new HttpCookie(name); 
cookie.Expires = DateTime.Now.AddYears(1); 
cookie.Value = data; 
HttpContext.Current.Response.Cookies.Set(cookie) 

ととして得る:

var cookieCollection = HttpContext.Current.Request.Cookies; 
var cookie = cookieCollection[name].Value; 

を私は基本的には、取得問題のプロパティを変更して、設定しないクッキーを更新します。私が最初に設定した後、このように

cookieCollection[0] 
{System.Web.HttpCookie} 
    Domain: null 
    Expires: {01-01-0001 00:00:00} 
    HasKeys: false 
    HttpOnly: false 
    Name: "myCookieUc" 
    Path: "/" 
    Secure: false 
    Shareable: false 
    Value: "{...}" 
    Values: {...} 
cookieCollection[1] 
{System.Web.HttpCookie} 
    Domain: null 
    Expires: {21-01-2018 11:00:10} 
    HasKeys: false 
    HttpOnly: false 
    Name: "myCookieUc" 
    Path: "/" 
    Secure: false 
    Shareable: false 
    Value: "{...}" 
    Values: {...} 

:さて、私が気づいたことは、私はクッキーを更新するとき、.NETが同じ名前でcookieCollectionに新しいクッキーを追加し、そしてなど期限切れの古いものを設定することです私のクッキーを更新したら、私はクッキーコレクションに2つのクッキーを持っています。だから私が取得しようとするとき:

var cookie = cookieCollection[name].Value; 

私はすでに有効期限が切れたクッキーを得るようです。

.Netのクッキーアップデートは、Ajaxコールによってトリガーされます。同じ.NetメソッドでCookieを複数回更新することがあります。

私が行うとき、だから私の質問は、次のとおりです。

var cookie = cookieCollection[name].Value; 

なぜそれは私に期限切れのクッキーを与えるのでしょうか?期限切れでないクッキーを取得する代わりにLinqを実行することはできますか?

答えて

0

クッキーを更新するコードは提供していませんが、コードを更新するたびに新しいクッキーを作成すると、そのコードが表示されます。 Change a cookie value of a cookie that already existsMSDNを読んでください。両方のリンクには、Cookieが存在するかどうかをチェックし、最後に有効期限を変更するサンプルコードがあります。

関連する問題