<%@ WebHandler Language="C#" Class="ashx_LoginOut" %>using System;
using System.Web;public class ashx_LoginOut : BaseHttpHandler
{    public override void ProcessRequest(HttpContext context)
    {
        try
        {
            base.ProcessRequest(context);            Response.ContentType = "text/plain";
            Session.Clear();
            context.Session["ccSouTiInfo"] = null;
            HttpCookie cookies = context.Request.Cookies["UserInfo"];
            context.Session.Abandon();//结束会话
            context.Session.Clear();//清空session
            if (cookies != null)
            {
                HttpCookie cookie = null;
                cookie = context.Request.Cookies["UserInfo"];
                cookie.Expires = DateTime.Now.AddDays(-19);
                context.Response.Cookies.Add(cookie);
            }            Response.Cookies.Clear();
            WriteLog(string.Format("{0}退出登陆", this.user.DisplayName));
            WriteSuccess();
        }
        catch (Exception ex)
        {
            WriteError(ex.Message);
        }
    }}
这样处理以后 session cookies中的UserInfo 仍然存在,解决很长时间了没搞定,求大家帮忙

解决方案 »

  1.   

    设置 cookie 使用 context.Response.Cookies["UserInfo"],读取 cookie 才使用 context.Request.Cookies["UserInfo"]。不要使用同一个东西。
      

  2.   


    您好
    <%@ WebHandler Language="C#" Class="ashx_LoginOut" %>using System;
    using System.Web;public class ashx_LoginOut : BaseHttpHandler
    {    public override void ProcessRequest(HttpContext context)
        {
            try
            {
                base.ProcessRequest(context);            Response.ContentType = "text/plain";
                Session.Clear();
                context.Session["UserInfo"] = null;
                HttpCookie cookies = context.Request.Cookies["UserInfo"];
                context.Session.Abandon();//结束会话
                context.Session.Clear();//清空session
                if (cookies != null)
                {
                    //HttpCookie cookie = null;
                    //cookie = context.Request.Cookies["UserInfo"];
                    cookies.Expires = DateTime.Now.AddDays(-19);
                    context.Response.Cookies.Add(cookies);
                    //context.Response.Cookies.a
                }            Response.Cookies.Clear();
                WriteLog(string.Format("{0}退出登陆", this.user.DisplayName));
                WriteSuccess();
            }
            catch (Exception ex)
            {
                WriteError(ex.Message);
            }
        }}您好,这个问题已经困扰好几天了现在context.Request.Cookies["UserInfo"];读取是用的request,设置是用的response,还是不行呢?
      

  3.   

    你这是服务器端代码,没有什么“清除cookie”这一说。正确地设置 Response.Cookie,不要清除。