ASP.NET仅在空值时设置cookie

时间:2013-07-18 03:57:28

标签: c# asp.net cookies

我正在尝试在用户访问我的网页时设置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提前测试它但得到了相同的结果并决定将它移动到应用程序级别,看看是否会产生任何差异,但它没有:(。

0 个答案:

没有答案