HttpCookie因未知原因被删除

时间:2015-03-04 22:21:35

标签: c# asp.net cookies httpcookie

好吧,好吧。出于某种原因,此cookie将被删除/覆盖。
它确实存在了一段时间。好吧,对于代码2的一个周期,但是当通过页面加载再次调用代码2时,它不包含我的数据。
cookie包含的是一个编码的会话ID,用于确定该用户是谁以及他们是否是管理员。
如果它没有用于比较的sessionID,它会将用户引导到登录页面。

假设用户角色设置为1。

代码1:http://pastebin.com/rfP7se0x
代码2:http://pastebin.com/c2Jy7zQ1(剥离了与cookie无关的代码。)
代码3:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace FormsAuthenticateProject.Customer
{
    public partial class Customer : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                DBConnLayer DBCL = new DBConnLayer();
                DBCL.userRoleRedirect();
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

userRoleRedirecthttp://pastebin.com/c2Jy7zQ1)内,您正在进行以下条件检查:

else if (ckDateTime.CompareTo(DateTime.Now) > 0)

您需要检查这是否会评估为true。我怀疑cookie到期时间意味着Now与cookie到期时间之间的差异不会超过0.罪魁祸首可能在以下代码中,它解析了到期时间:

 DateTime.TryParseExact(myCookie.Values["LogoutTimer"], DTFormat,
                CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out ckDateTime);

答案 1 :(得分:0)

这个答案已在这里得到解答:cookie values disappear when traversing between content pages

我将此代码添加到userRoleRedirect

的第一行
if (Request.Cookies["Session"] != null)
{
    Response.Cookies.Set(Request.Cookies["Session"]);
}

HttpCookie myCookie = Request.Cookies["Session"];
var myCookie = Request.Cookies["Session"].Values;
我使用左myCookie["ValueName"]来获取值 它返回一个字符串。