如何在 C# 和 ASP.NET MVC 中读取/写入 cookie

Posted

技术标签:

【中文标题】如何在 C# 和 ASP.NET MVC 中读取/写入 cookie【英文标题】:How can read / write cookie in C# & ASP.NET MVC 【发布时间】:2019-01-05 18:00:44 【问题描述】:

我的cookie有问题,这是我在课堂上的读写代码:

public static class language

   public static void set_default(string name)
   
       HttpContext.Current.Response.Cookies.Remove("language");
       HttpCookie language = new HttpCookie("language");
       language["name"] = name;
       language.Expires = DateTime.Now.AddDays(1d);
       HttpContext.Current.Response.Cookies.Add(language);
   

   public static string get_default()
   
       string name = string.Empty;
       HttpCookie langauge = HttpContext.Current.Response.Cookies.Get("language");
       name = langauge["name"];
       return name;
   

当我转到下一页并使用@language.get_default() 获取默认语言时,响应为null - 为什么?

【问题讨论】:

【参考方案1】:

在编写 cookie 时,您将 cookie 添加到 Response。阅读它们时,您应该使用Request

HttpCookie language = HttpContext.Current.Request.Cookies.Get("language");

所以set_default() 是正确的,但你应该更改为get_default()

【讨论】:

【参考方案2】:

我不确定language.Expires = DateTime.Now.AddDays(1d); 是否正确。 DateTime.Now.AddDays 接受整数,而 1d 不接受。

创建饼干:

HttpContext.Response.Cookies.Append("language", "ENGLISH", new CookieOptions()
            
                Expires = DateTime.Now.AddDays(5)
            );

获取饼干:

 string language = HttpContext.Request.Cookies["language"];

删除饼干:

HttpContext.Response.Cookies.Append("language", "", new CookieOptions()
            
                Expires = DateTime.Now.AddDays(-1)
            );

HttpContext.Response.Cookies.Delete("language");

【讨论】:

以上是关于如何在 C# 和 ASP.NET MVC 中读取/写入 cookie的主要内容,如果未能解决你的问题,请参考以下文章

菜鸟入门ASP.NET Core5:命令行配置Json文件配置Bind读取配置到C#实例在Core Mvc中使用Options

如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量

如何在 C# 页面 ASP.NET Core MVC 上使用 SignInManager 和 Usermanager

如何在 ASP.NET Core MVC 中读取操作方法的属性?

如何从 ASP.net MVC 程序中获取纯 c# 程序中的 JSON 数据?

如何在 asp.net mvc C# 中使用 paypal 交易的交易 ID 获取交易详情?