1

我有一个 logout.aspx,当用户单击注销时会调用它,并且我想在其中删除 cookie,但它不会这样做......

public partial class LogoutUser : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        HttpCookie cookie;

        cookie = Request.Cookies.Get("Basket");
        if (cookie == null)
        {
            cookie = new HttpCookie("Basket");
        }

        foreach (string item in cookie.Values.AllKeys)
        {
            Response.Cookies[item].Expires = DateTime.Now.AddDays(-1);                
        }

        cookie.Expires = DateTime.Now.AddDays(-1d);
        Response.Cookies["Basket"].Expires = DateTime.Now.AddYears(-1);    
        Session.Abandon();   

        Response.Redirect("~/Default.aspx");
    }
}

cookie 将值存储在篮子中,但注销后我仍然可以访问篮子,但我不知道出了什么问题。

4

2 回答 2

5

这是一些相关文档

我相信你的错误是在这一行:

if (cookie == null)

您正在检查 null,而不是检查 not null。因此,

HttpCookie cookie;

    cookie = Request.Cookies.Get("Basket");
    if (cookie != null)
    {
        cookie = new HttpCookie("Basket");
        cookie.Expires = DateTime.Now.AddDays(-1);
        Response.Cookies.Add(cookie);
    }

    Response.Redirect("~/Default.aspx");

应该做的伎俩。

希望这会有所帮助。

于 2012-04-10T20:53:34.473 回答
1

会不会是这个?

默认情况下,已放弃或过期会话的会话标识符被回收。也就是说,如果发出的请求包括过期或放弃会话的会话标识符,则使用相同的会话标识符启动新会话。您可以通过将sessionState 配置元素的regenerateExpiredSessionId属性设置为true来禁用此功能。有关详细信息,请参阅会话标识符。

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.abandon.aspx

于 2012-04-10T20:30:39.813 回答