Чтение cookie в c #
Я хочу, чтобы кто-то, кто посещает мой интернационализированный сайт, смог изменить язык. Я подумал, что лучшим способом было бы сохранить язык, выбранный в куки-файле, поэтому при загрузке страницы он может найти предпочтительный язык в куки-файле.
Запись файла cookie идет отлично, но я постоянно сталкиваюсь с ошибками, пытаясь его прочитать. Поскольку я новичок в C #, у меня возникли проблемы с переводом ошибок, которые бросает в меня Visual Studio.
Я хочу, чтобы значение файла cookie называлось «UserSettings». в строке под названием lang. Я пытаюсь так:
string lang = Request.Cookies["UserSettings"].Value;
Выдает ошибку:
Object reference not set to an instance of an object
Я думаю, что проблема должна быть в правой части утверждения, так как я инициализирую строку в левой части.
Я также попытался создать экземпляр cookie, выполнив
HttpCookie cookie = Request.Cookies["UserSettings"].Value;
но визуальной студии это совсем не нравится.
Что я делаю неправильно? Нужно ли создавать экземпляр объекта Request? Любая помощь будет оценена.
Я следую различным учебникам по этой теме, но все они приводят к одной и той же ошибке.
EDIT: Я заметил, что у меня было
HttpCookie cookie = Request.Cookies["UserSettings"].Value;
Я изменил это на:
HttpCookie cookie = Request.Cookies["UserSettings"];
но не повезло, это все равно не сработало.
EDIT: вот как делается мое печенье
public void Application_BeginRequest()
{
myCookie = new HttpCookie("UserSettings");
myCookie.Value = "nl";
myCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(myCookie);
hc = new HomeController();
}
Мой cookie там на 100%, я абсолютно уверен, я вижу его в Firefox-веб-разработчике.
ОБНОВЛЕНИЕ: это точный код, который я сейчас вызываю
public string getLang()
{
// HttpCookie aCookie = Request.Cookies["UserSettings"];
// string lang = Server.HtmlEncode(aCookie.Value);
// if (lang != null)
// {
// currentLanguage = lang;
// }
return currentLanguage;
}
таким образом, мой код компилируется, если я раскомментирую свой код, то это происходит (ошибка @ первая строка этого метода)