1

私はクッキーの有効期限に夢中になっています。概念的には非常に単純ですが、私のサーバーでは機能していません...それは私を夢中にさせている IIS 設定だと思います。どう思いますか????

MVC 3 サンプル プロジェクトから始めて、ホーム コントローラーに次のコードを追加しています。

  public ActionResult Index()
    {
         var PersistentLogonCookieName = "test";
        var persistentLogon = DateTime.Now.ToLongTimeString(); 
         var persistentLogonCookie = new HttpCookie(PersistentLogonCookieName, persistentLogon);
           persistentLogonCookie.Expires = DateTime.UtcNow.AddDays(2);


        if (Request.Cookies[PersistentLogonCookieName] == null)
        {
            ViewBag.Message = "Cookie NOT Found!";

             persistentLogonCookie.Value = "added" + DateTime.Now.ToLongTimeString();
            Response.Cookies.Add(persistentLogonCookie);
        }
        else
        {
            ViewBag.Message = "Cookie Found!";

            Response.SetCookie(persistentLogonCookie);
        }
        return View();
    }

ローカルで実行すると、Cookieが見つかった2番目のリクエストの後に正常に動作します....サーバーで実行すると、常にCookieが見つかりません....コメントpersistentLogonCookie.Expires = DateTime.UtcNow.AddDays(2);すると、サーバーでも正常に動作します。ローカル マシンとサーバーの間の IIS 設定が異なる場合、何を考えればよいかわかりません。応答ヘッダーには次のものがあります。

Set-Cookie  test=added4:23:39 PM; expires=Wed, 14-Aug-2013 15:23:39 GMT; path=/

しかし、サーバーでテストすると、次のリクエストのCookieコレクションにCookieが追加されず、ローカルIISでテストするとCookieコレクションに追加されます....どんな提案も大歓迎です....

4

1 に答える 1

1

申し訳ありませんが、問題の原因がわかりました.... サーバーが応答日付で間違った日付を返していました.. Cookie コレクションに Cookie を追加するには、有効期限が応答日付よりも後である必要があります。

于 2013-08-12T17:12:46.583 に答える