【问题标题】:How can read / write cookie in C# & ASP.NET MVC如何在 C# 和 ASP.NET MVC 中读取/写入 cookie
【发布时间】: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 - 为什么?

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc model-view-controller


    【解决方案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");
      

      【讨论】:

        猜你喜欢
        • 2017-09-02
        • 1970-01-01
        • 1970-01-01
        • 2013-05-21
        • 1970-01-01
        • 2011-06-25
        • 1970-01-01
        • 2018-04-15
        • 1970-01-01
        相关资源
        最近更新 更多