我正在尝试在用户访问我的网页时设置Cookie。 cookie的值是我存储在我的数据库中的唯一编号,用于跟踪用户何时返回我的网站。我在我的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”都会被重写一个新值。我一直在阅读MSDN,关于如何在ASP.NET中存储cookie,并根据说明,它应该正常工作的方式。我一定做错了,我看不到。我将所有这些代码放在普通页面中,例如test.aspx.cs提前测试它但得到了相同的结果并决定将它移动到应用程序级别,看看是否会产生任何差异,但它没有:(。