在C#中读取Cookie

Dea*_*ing 4 c# cookies

我希望访问我的国际化站点的人能够更改语言。我认为最好的方法是存储cookie中选择的语言-因此,在页面加载时,它可以在cookie中查找首选语言。

编写cookie的过程非常完美,但是我在尝试读取它时遇到了很多错误。由于我是C#的新手,因此无法转换Visual Studio向我抛出的错误。

我想要一个名为lang的字符串中名为“ UserSettings”的cookie的值。我正在尝试这样:

string lang = Request.Cookies["UserSettings"].Value;
Run Code Online (Sandbox Code Playgroud)

它引发的错误是:

你调用的对象是空的

我认为问题必须在语句的右侧,因为我正在初始化左侧的字符串。

我也尝试通过做一个cookie的实例

HttpCookie cookie = Request.Cookies["UserSettings"].Value;
Run Code Online (Sandbox Code Playgroud)

但是Visual Studio根本不喜欢这样。

我究竟做错了什么?我是否必须创建Request对象的实例?任何帮助,将不胜感激。

我正在关注有关此主题的不同教程,但是它们都会导致相同的错误。

编辑:我注意到我有

HttpCookie cookie = Request.Cookies["UserSettings"].Value;
Run Code Online (Sandbox Code Playgroud)

我将其更改为:

HttpCookie cookie = Request.Cookies["UserSettings"]; 
Run Code Online (Sandbox Code Playgroud)

但没有运气,它仍然没有用。

编辑:这就是我的cookie制作方式

 public void Application_BeginRequest()
    {
        myCookie = new HttpCookie("UserSettings");
        myCookie.Value = "nl";
        myCookie.Expires = DateTime.Now.AddDays(1);
        Response.Cookies.Add(myCookie);
        hc = new HomeController();
    }
Run Code Online (Sandbox Code Playgroud)

我的cookie绝对是100%在那里,我可以在Firefox-web开发人员中看到它。

更新:这是我现在正在调用的确切代码

        public string getLang()
    {
       // HttpCookie aCookie = Request.Cookies["UserSettings"];
       //  string lang = Server.HtmlEncode(aCookie.Value);
       //  if (lang != null)
       // {
       //      currentLanguage = lang;
       //  }
        return currentLanguage;
    }
Run Code Online (Sandbox Code Playgroud)

这样我的代码编译,如果我取消注释我的代码然后它不会(此方法的第一行错误)

the*_*dam 5

你可以试试这个吗?

HttpCookie aCookie = Request.Cookies["UserSettings"];
string lang = Server.HtmlEncode(aCookie.Value);
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/ms178194.aspx

编辑这对您有帮助吗? asp.net mvc无法访问基本控制器中的cookie数据


jay*_*agi 5

听起来好像从未设置过cookie。在这种情况下,您需要检查以下内容:

HttpCookie aCookie = Request.Cookies["UserSettings"];
if(aCookie != null) {
     object userSettings = aCookie.Value;
} else {
     //Cookie not set.
}
Run Code Online (Sandbox Code Playgroud)

设置Cookie:

HttpCookie cookie = new HttpCookie("UserSettings");

cookie["UserSettings"] = myUserSettingsObject;
cookie.Expires = DateTime.Now.AddYears(1);
Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)

这是一篇很好的文章:http : //www.java2s.com/Code/ASP/Session-Cookie/CreateandretrieveCookiedataC.htm

  • 取消注释代码时会出现什么错误?您是否正在检查请求不可用的cookie? (2认同)