3

これはかなり簡単なはずです。しかし、私の一生の間、ASP.NETMVCでCookieを作成することはできないようです。現在、私は次のコードを持っています:

DateTime lastActivityDate = DateTime.UtcNow;
if (Request.Browser.Cookies)
{
  HttpCookie lastActivityCookie = new HttpCookie(COOKIE_LAST_ACTIVITY, lastActivityDate.ToShortDateString());
  lastActivityCookie.Expires = DateTime.Now.AddMonths(-12);                    
  this.ControllerContext.HttpContext.Response.Cookies.Add(lastActivityCookie);
}

ブレークポイントを設定しましたが、Cookieが追加されているように見えます。(はい、私はRequest.Browser.Cookiesブロックに入っています)。次に、以下を使用してCookieを取得しようとします。

DateTime lastActivity = DateTime.UtcNow.AddDays(-7);        // Default to the past week

HttpCookie lastActivityCookie = Request.Cookies[COOKIE_LAST_ACTIVITY];
if (lastActivityCookie != null)
{
  DateTime temp = DateTime.UtcNow;
  if (String.IsNullOrWhiteSpace(lastActivityCookie.Value) == false)
  {
    if (DateTime.TryParse(lastActivityCookie.Value, out temp))
      lastActivity = temp;
  }
}

残念ながら、lastActivityCookie常にnullです。さらに、Chromeの[リソース]タブを見ると、Cookieブランチが表示されますが、作成しようとしているCookieがリストされていません。ただし、.ASPXAUTH Cookieを含め、他に2つのCookieがリストされています。私は何が間違っているのですか?

4

1 に答える 1

5

HttpCookieオブジェクトのExpiresプロパティを見てください。これについて詳しくはこちらをご覧ください。msdnサイトの例のように、将来的にCookieの有効期限を設定する必要があると思います。過去に日時を設定したため、Cookieは自動的に期限切れになり、読み取ることができなくなります。

于 2013-02-23T14:55:40.313 に答える