Lendo cookie em c #

Quero que alguém que visite meu site internacionalizado possa alterar o idioma. Eu pensei que o melhor caminho seria armazenar o idioma escolhido em um cookie - assim, quando a página carrega, pode procurar o idioma preferido no cookie.

Escrevendo o cookie está indo perfeito, no entanto, continuo correndo em erros tentando lê-lo. Como eu sou novo em c # estou tendo problemas para traduzir os erros visual studio lança em mim.

Eu quero o valor de um cookie chamado 'UserSettings' em uma string chamada lang. Estou tentando assim:

string lang = Request.Cookies["UserSettings"].Value;

O erro que isso gera é:

Referência de objeto não definida para uma instância de um objeto

Eu estou pensando que o problema tem que estar no lado direito da instrução, já que eu estou inicializando a string no lado esquerdo.

Eu também tentei criar uma instância do cookie fazendo

HttpCookie cookie = Request.Cookies["UserSettings"].Value;

mas o visual studio não gosta nada disso.

O que estou fazendo de errado? Eu tenho que fazer uma instância do objeto Request? Qualquer ajuda seria apreciada.

Estou seguindo diferentes tutoriais sobre este tópico, mas todos eles resultam nesse mesmo erro.

EDITAR: Eu notei que eu tinha

HttpCookie cookie = Request.Cookies["UserSettings"].Value;

Eu mudei para:

HttpCookie cookie = Request.Cookies["UserSettings"]; 

mas sem sorte, ainda não funcionou.

EDITAR: é assim que meu cookie é feito

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

Meu cookie é 100% lá, eu estou absolutamente certo, eu posso ver isso no Firefox-web developer.

UPDATE: este é o código exato que estou chamando agora

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

desta maneira meu código compila, se eu descomentar meu código então ele faz (erro @ primeira linha deste método)

questionAnswers(7)

yourAnswerToTheQuestion