ユーザーが自分の Web ページにアクセスしたときに Cookie を設定しようとしています。Cookie の値は、ユーザーがいつ Web サイトに戻ってきたかを追跡するためにデータベースに保存する一意の数値です。次のように、global.asax に Cookie を設定します。
void Application_BeginRequest()
{
string cookievalue = "";
string a = "";
try
{
a = GetCookie();
if (!string.IsNullOrEmpty(a))
{
cookievalue = a;
}
else
{
cookievalue = SetCookie();
}
}
catch (Exception ex)
{
}
}
BeginRequest() では、Cookie が存在するかどうかのみを確認します。存在する場合は、何もせず、Cookie 内に既にある値を保持します。存在しない場合は、Cookie を設定して値を追加します。
public static string GetCookie()
{
string cookievalue = "";
try
{
if (HttpContext.Current.Request.Cookies["TestCookie"] != null)
cookievalue = HttpContext.Current.Response.Cookies["TestCookie"].Value;
}
catch (Exception ex)
{
//
}
return cookievalue;
}
public static string SetCookie()
{
string cookievalue = "";
try
{
HttpCookie myCookie = new HttpCookie("TestCookie");
// Set the cookie value.
myCookie.Value = "1234"; //1234 is my unique number
myCookie.Expires = DateTime.Now.AddYears(50);
HttpContext.Current.Response.Cookies.Add(myCookie);
cookievalue = id;
}
catch (Exception ex)
{
//
}
return cookievalue;
}
問題は、ページをリロードするたびに、「TestCookie」が新しい値で書き換えられることです。Cookie が ASP.NET にどのように格納されているか、および指示に従って、正常に動作するはずの方法について MSDN を読んでいます。目に見えない何か悪いことをしているに違いない。私は通常のページ内にこのすべてのコードを持っていました.test.aspx.csなど、早期にテストしましたが、同じ結果が得られたので、アプリケーションレベルに移動して違いがあるかどうかを確認しましたが、違いはありませんでした:(.