C# 如何删除ASP.NET网站上的Cookie

C# 如何删除ASP.NET网站上的Cookie,c#,asp.net,session,cookies,session-cookies,C#,Asp.net,Session,Cookies,Session Cookies,在我的网站中,当用户单击“注销”按钮时,Logout.aspx页面将加载代码Session.Clear() 在ASP.NET/C#中,这会清除所有cookie吗?或者是否需要添加任何其他代码来删除我网站上的所有cookie?否,cookie只能通过为每个cookie添加的代码来清除 if (Request.Cookies["UserSettings"] != null) { HttpCookie myCookie = new HttpCookie("UserSettings");

在我的网站中,当用户单击“注销”按钮时,Logout.aspx页面将加载代码
Session.Clear()


在ASP.NET/C#中,这会清除所有cookie吗?或者是否需要添加任何其他代码来删除我网站上的所有cookie?

否,cookie只能通过为每个cookie添加的代码来清除

if (Request.Cookies["UserSettings"] != null)
{
    HttpCookie myCookie = new HttpCookie("UserSettings");
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
}
在执行
会话时。清除()

  • 将删除
    会话
    集合中的所有键值对<代码>会话结束事件未发生
如果在注销期间使用此方法,还应使用
会话。放弃
方法
会话结束
事件:

  • 具有会话ID的Cookie(如果您的应用程序将Cookie用于会话ID存储,默认情况下是这样)将被删除

不,饼干只能由每个人清洗

if (Request.Cookies["UserSettings"] != null)
{
    HttpCookie myCookie = new HttpCookie("UserSettings");
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
}
在执行
会话时。清除()

  • 将删除
    会话
    集合中的所有键值对<代码>会话结束
事件未发生 如果在注销期间使用此方法,还应使用
会话。放弃
方法
会话结束
事件:

  • 具有会话ID的Cookie(如果您的应用程序将Cookie用于会话ID存储,默认情况下是这样)将被删除

    • 试试这样的方法:

      if (Request.Cookies["userId"] != null)
      {
          Response.Cookies["userId"].Expires = DateTime.Now.AddDays(-1);   
      }
      
      但使用它也有意义

      Session.Abandon();
      

      除此之外,在许多情况下。

      尝试以下方法:

      if (Request.Cookies["userId"] != null)
      {
          Response.Cookies["userId"].Expires = DateTime.Now.AddDays(-1);   
      }
      
      但使用它也有意义

      Session.Abandon();
      

      此外,在许多情况下。

      不幸的是,对我来说,设置“过期”并不总是有效。饼干没有受到影响

      这段代码确实对我有用:

      HttpContext.Current.Session.Abandon();
      HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
      

      其中,
      “ASP.NET\u SessionId”
      是cookie的名称。这并不是真的删除cookie,而是用一个空白cookie覆盖它,这对我来说已经足够接近了。

      不幸的是,对我来说,设置“Expires”并不总是有效的。饼干没有受到影响

      这段代码确实对我有用:

      HttpContext.Current.Session.Abandon();
      HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
      

      其中,
      “ASP.NET\u SessionId”
      是cookie的名称。这并不是真的删除cookie,而是用一个空白cookie覆盖它,这对我来说已经足够接近了。

      您不应该将密码存储为cookie。要删除cookie,实际上只需修改并使其过期。你不能真的删除它,即从用户的磁盘上删除它

      以下是一个示例:

      HttpCookie aCookie;
          string cookieName;
          int limit = Request.Cookies.Count;
          for (int i=0; i<limit; i++)
          {
              cookieName = Request.Cookies[i].Name;
              aCookie = new HttpCookie(cookieName);
              aCookie.Expires = DateTime.Now.AddDays(-1); // make it expire yesterday
              Response.Cookies.Add(aCookie); // overwrite it
          }
      
      HttpCookie-aCookie;
      字符串cookieName;
      int limit=Request.Cookies.Count;
      
      对于(int i=0;i您不应将密码存储为cookie。要删除cookie,您只需修改它并使其过期。您不能真正删除它,即从用户磁盘中删除它

      以下是一个示例:

      HttpCookie aCookie;
          string cookieName;
          int limit = Request.Cookies.Count;
          for (int i=0; i<limit; i++)
          {
              cookieName = Request.Cookies[i].Name;
              aCookie = new HttpCookie(cookieName);
              aCookie.Expires = DateTime.Now.AddDays(-1); // make it expire yesterday
              Response.Cookies.Add(aCookie); // overwrite it
          }
      
      HttpCookie-aCookie;
      字符串cookieName;
      int limit=Request.Cookies.Count;
      
      对于(int i=0;i将OP的问题标题视为删除所有Cookie—“删除网站中的Cookie”

      我在网上的某个地方遇到了Dave Domagala的代码。我编辑了Dave的代码,以允许Google Analytics Cookie也出现在网站上,它通过在网站上找到的所有Cookie循环,并将它们全部删除。(从开发人员的角度来看,将新代码更新到现有网站,这是一种很好的做法,可以避免用户重新访问该网站时出现问题)

      我使用下面的代码,首先读取cookies,保存所有必需的数据,然后在用下面的循环将所有内容清洗干净后重置cookies

      守则:

      int limit = Request.Cookies.Count; //Get the number of cookies and 
                                         //use that as the limit.
      HttpCookie aCookie;   //Instantiate a cookie placeholder
      string cookieName;   
      
      //Loop through the cookies
      for(int i = 0; i < limit; i++)
      {
       cookieName = Request.Cookies[i].Name;    //get the name of the current cookie
       aCookie = new HttpCookie(cookieName);    //create a new cookie with the same
                                                // name as the one you're deleting
       aCookie.Value = "";    //set a blank value to the cookie 
       aCookie.Expires = DateTime.Now.AddDays(-1);    //Setting the expiration date
                                                      //in the past deletes the cookie
      
       Response.Cookies.Add(aCookie);    //Set the cookie to delete it.
      }
      

      将OP的问题标题视为删除所有Cookie-“删除网站中的Cookie”

      我在网上的某个地方遇到了Dave Domagala的代码。我编辑了Dave的代码,以允许Google Analytics Cookie也出现在网站上,它通过在网站上找到的所有Cookie循环,并将它们全部删除。(从开发人员的角度来看,将新代码更新到现有网站,这是一种很好的做法,可以避免用户重新访问该网站时出现问题)

      我使用下面的代码,首先读取cookies,保存所有必需的数据,然后在用下面的循环将所有内容清洗干净后重置cookies

      守则:

      int limit = Request.Cookies.Count; //Get the number of cookies and 
                                         //use that as the limit.
      HttpCookie aCookie;   //Instantiate a cookie placeholder
      string cookieName;   
      
      //Loop through the cookies
      for(int i = 0; i < limit; i++)
      {
       cookieName = Request.Cookies[i].Name;    //get the name of the current cookie
       aCookie = new HttpCookie(cookieName);    //create a new cookie with the same
                                                // name as the one you're deleting
       aCookie.Value = "";    //set a blank value to the cookie 
       aCookie.Expires = DateTime.Now.AddDays(-1);    //Setting the expiration date
                                                      //in the past deletes the cookie
      
       Response.Cookies.Add(aCookie);    //Set the cookie to delete it.
      }
      

      我只想指出,在使用Session.Discard时,会话ID cookie并没有被删除

      放弃会话时,不会从中删除会话ID cookie 用户的浏览器。因此,一旦会话完成 放弃,对同一应用程序的任何新请求都将使用相同的 会话ID,但将有一个新的会话状态实例。同时 时间,如果用户在同一DNS中打开另一个应用程序 域,用户在放弃后不会丢失其会话状态 方法从一个应用程序调用

      有时,您可能不想重用会话ID。如果您这样做,并且如果 如果您了解不重用会话ID的后果,请使用 下面的代码示例演示如何放弃会话并清除 会话ID cookie:

      Session.Abandon();
      Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
      
      此代码示例从服务器中清除会话状态并设置 会话状态cookie为null。null值有效地清除 从浏览器中删除cookie


      我只想指出,在使用会话时,会话ID cookie不会被删除。正如其他人所说,放弃

      放弃会话时,不会从中删除会话ID cookie 用户的浏览器。因此,一旦会话完成 放弃,对同一应用程序的任何新请求都将使用相同的 会话ID,但将有一个新的会话状态实例。同时 时间,如果用户在同一DNS中打开另一个应用程序 域,用户在放弃后不会丢失其会话状态 方法从一个应用程序调用

      有时,您可能不想重用会话ID。如果您这样做,并且如果 如果您了解不重用会话ID的后果,请使用 下面的代码示例演示如何放弃会话并清除 会话ID cookie:

      Session.Abandon();
      Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
      
      此代码示例从服务器中清除会话状态并设置