私はASP MVCアプリで、Cookieを保存および取得するための見かけ上単純なコードをいくつか持っていますが、何らかの理由で永続化しません。コントローラーのコードは次のとおりです。
if (System.Web.HttpContext.Current.Response.Cookies["CountryPreference"] == null)
{
HttpCookie cookie = new HttpCookie("CountryPreference");
cookie.Value = country;
cookie.Expires = DateTime.Now.AddYears(1);
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}
そして再びロードするには:
if (System.Web.HttpContext.Current.Request.Cookies["CountryPreference"] != null)
{
System.Web.HttpContext.Current.Request.Cookies["CountryPreference"].Expires = DateTime.Now.AddYears(1);
data.Country = System.Web.HttpContext.Current.Request.Cookies["CountryPreference"].Value;
}
何らかの理由でCookieは常にnullですか?
問題は次のコードにあります。
if (System.Web.HttpContext.Current.Response.Cookies["CountryPreference"] == null)
RequestではなくResponseオブジェクトを使用してCookieの存在を確認しようとすると、ASP.netは自動的にCookieを作成します。
この詳細な投稿をここで確認してください: http://chwe.at/blog/post/2009/01/26/Done28099t-use-ResponseCookiesstring-to-check-if-a-cookie-exists!.aspx =
リンクが再びダウンした場合の記事からの引用....
ストーリー全体を読みたくない場合の簡単な説明
「if(Response.Cookies [“ mycookie”]!= null){…}」のようなコードを使用すると、ASP.Netは自動的に「mycookie」という名前の新しいCookieをバックグラウンドで生成し、古いCookieを上書きします。 Cookieを読み取るには、常にRequest.Cookies-Collectionを使用してください。
[ 記事の詳細 ]
再開時には、「Response "を使用してCookieを読み取らないでください。" Request "を使用してください。