Leyendo galleta en c #

Quiero que alguien que visite mi sitio internacionalizado pueda cambiar el idioma. Pensé que la mejor manera sería almacenar el idioma elegido en una cookie, de modo que cuando se carga la página, pueda buscar el idioma preferido en la cookie.

Escribir la cookie es perfecto, sin embargo sigo encontrando errores al intentar leerla. Como soy nuevo en C #, tengo problemas para traducir los errores que Visual Studio me lanza.

Quiero el valor de una cookie llamada 'UserSettings' en una cadena llamada lang. Estoy intentando así:

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

El error que arroja es:

Referencia a objeto no establecida como instancia de un objeto

Estoy pensando que el problema tiene que estar en el lado derecho de la declaración, ya que estoy inicializando la cadena en el lado izquierdo.

También intenté hacer una instancia de la cookie haciendo

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

Pero a Visual Studio no le gusta esto en absoluto.

¿Qué estoy haciendo mal? ¿Tengo que crear una instancia del objeto Request? Cualquier ayuda sería apreciada.

Estoy siguiendo diferentes tutoriales sobre este tema, pero todos dan como resultado este mismo error.

EDITAR: Me he dado cuenta de que tenia

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

Lo cambié a

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

Pero no hubo suerte, todavía no funcionó.

EDITAR: Así es como se hace mi galleta.

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

Mi cookie está al 100%, estoy absolutamente seguro, puedo verlo en el desarrollador de Firefox-web.

ACTUALIZACIÓN: este es el código exacto al que estoy llamando ahora

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

de esta manera, mi código se compila, si lo descomprimo, lo hace (error @ primera línea de este método)

Respuestas a la pregunta(7)

Su respuesta a la pregunta