Problema al crear una cookie de autenticación persistente: ASP.NET MVC

OK, aquí está mi código para crear una cookie de autenticación:

        // get user's role
        List<UserType> roles = rc.rolesRepository.GetUserRoles(rc.userLoginRepository.GetUserID(userName));
        List<string> rolesList = (from r in roles
                                 select r.ToString()).ToList();
        string[] rolesArr = rolesList.ToArray();

        // create encryption cookie
        FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
                1,
                userName,
                DateTime.Now,
                DateTime.Now.AddDays(90),
                createPersistentCookie,
                String.Join(";",rolesArr) //user's roles 
                );

        // add cookie to response stream
        string encryptedTicket = FormsAuthentication.Encrypt(authTicket);

        System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
        System.Web.HttpContext.Current.Response.Cookies.Add(authCookie);
        //FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);

Y aquí está mi código en Global.asax para establecer los roles de usuario en la identidad del usuario:

    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
        HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
        if (authCookie == null || authCookie.Value == "")
        {
            return;
        }
        FormsAuthenticationTicket authTicket = null;
        try
        {
            authTicket = FormsAuthentication.Decrypt(authCookie.Value);
            string[] roles = authTicket.UserData.Split(new char[] { ';' });
            if (Context.User != null)
            {
                Context.User = new System.Security.Principal.GenericPrincipal(Context.User.Identity, roles);
            }
        }
        catch
        {
            return;
        }
    }

Sin embargo, si "createPersistentCookie" es VERDADERO en el ejemplo superior, no se crea una cookie persistente. Si descomento la última línea así:

        //System.Web.HttpContext.Current.Response.Cookies.Add(authCookie);
        FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);

entonces la cookie persistente se crea en mi disco duro. PERO entonces en el código Global.asax, el campo UserData en "authTicket" está en blanco, ¡así que no puedo configurar los roles correctamente!

Entonces tengo que usar SetAuthCookie para crear una cookie persistente, pero luego, por alguna razón, el campo UserData desaparece de la cookie persistente.

¿¿Cuál es la respuesta a esto??

Respuestas a la pregunta(1)

Su respuesta a la pregunta