C# 在Asp.NETMVC4中使用Cookie

C# 在Asp.NETMVC4中使用Cookie,c#,asp.net-mvc-4,cookies,action,httpcookie,C#,Asp.net Mvc 4,Cookies,Action,Httpcookie,我有Asp.Net MVC4中的web应用程序,我想使用cookie进行用户登录和注销。因此,我的行动如下: 登录操作 注销操作 我在Loyout中使用的cookie如下: @using EShop.Core @using Newtonsoft.Json @{ var userInCookie = Request.Cookies["user"]; } ... @if (userInCookie != null && userInCookie.Value) {

我有Asp.Net MVC4中的web应用程序,我想使用cookie进行用户登录和注销。因此,我的行动如下:

登录操作

注销操作

我在Loyout中使用的cookie如下:

@using EShop.Core
@using Newtonsoft.Json
@{
   var userInCookie = Request.Cookies["user"];
}
...
  @if (userInCookie != null && userInCookie.Value)
  {
        <li><a href="#">Salam</a></li>
        <li><a href="@Url.Action("UserOut", "Home")">Cıxış</a></li>
  }
  else
  {
        <li><a href="@Url.Action("UserLog", "Home")">Giriş</a></li>
  }
@使用EShop.Core
@使用Newtonsoft.Json
@{
var userInCookie=Request.Cookies[“用户”];
}
...
@if(userInCookie!=null&&userInCookie.Value)
{
  • } 其他的 {
  • }
    但当我单击“UserOut”操作时,这个操作会第一次发生,但随后就不起作用了。我为查找进程设置了断点,但get-UserLog操作并没有退出。
    我的问题是我在哪里使用了错误的曲奇?在Asp.Net Mvc4中使用cookie的最佳方法是什么?

    尝试使用
    Response.SetCookie()
    ,因为
    Response.Cookies.Add()
    可能会导致添加多个cookie,而
    SetCookie
    将更新现有cookie。

    我们正在使用
    Response.SetCookie()
    用于更新旧cookie和
    响应。cookies.Add()
    用于添加新cookies。下面的代码
    CompanyId
    是在旧的
    cookie[OldCookieName]
    中更新的

    HttpCookie cookie = Request.Cookies["OldCookieName"];//Get the existing cookie by cookie name.
    cookie.Values["CompanyID"] = Convert.ToString(CompanyId);
    Response.SetCookie(cookie); //SetCookie() is used for update the cookie.
    Response.Cookies.Add(cookie); //The Cookie.Add() used for Add the cookie.
    
    这行代码没有任何作用。它相当于:

    DateTime temp = userCookie.Expires.AddDays(365); 
    //do nothing with temp
    
    你可能想要

    userCookie.Expires = DateTime.Now.AddDays(365); 
    

    您不使用表单身份验证有什么原因吗?我如何使用它?我知道这一点,但不太了解,所以我不能使用表单身份验证。我有一些特殊的过程,我恐怕不能做他们的表单验证。谢谢你的答复,但它不再工作。请看这个,很奇怪。为什么我的注销操作没有处理断点?!但是RedirectToAction可以正常工作:(因此,只有在使用
    RedirectToAction()
    时才会出现问题?谢谢!Response.SetCookie()确实有帮助。
    userCookie.Expires.AddDays(365); 
    
    DateTime temp = userCookie.Expires.AddDays(365); 
    //do nothing with temp
    
    userCookie.Expires = DateTime.Now.AddDays(365);