HttpCookie 因未知原因被删除

HttpCookie gets deleted for unknown reason

好的,就这样。出于某种原因,此 cookie 正在 deleted/overwritten。
它确实存在了一段时间。好吧,对于代码 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();
            }
        }
    }
}

userRoleRedirect (http://pastebin.com/c2Jy7zQ1) 中,您正在进行以下条件检查:

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

您需要检查这是否会计算为真。我怀疑 cookie 过期时间意味着 Now 和 cookie 过期时间之差加起来不大于 0。罪魁祸首可能在于以下解析过期时间的代码:

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

这里已经回答了这个答案: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"]
获取值 它returns一个字符串。