Pregunta

He creado mi propio formulario de registro y el usuario utilizando la clase de Membresía.

MembershipCreateStatus status;
MembershipUser newUser = Membership.CreateUser(tbxUsername.Text, 
                                               tbxPassword.Text, 
                                               tbxEmail.Text, 
                                               null, null, true, out status);

Después de crear el usuario utilizando el código, trato de establecer algunas propiedades de perfil como estas

Profile.CountryCode = ddlCountry.SelectedValue;
Profile.DisplayName = tbxDisplayName.Text;
Profile.Save();

Sin embargo, recibo el siguiente mensaje de excepción

Esta propiedad no se puede configurar para usuarios anónimos.

¿Alguna idea de por qué tengo esto?

¿Fue útil?

Solución

Creo que esto se debe a que no obtuvo el perfil primero (de DB / Lo que esté usando).

su código podría verse así:

ProfileCommon p = Profile.GetProfile(tbxUsername.Text);
p.CountryCode = ddlCountry.SelectedValue;
p.DisplayName = tbxDisplayName.Text;
p.Save();

Otros consejos

Me encontré con el mismo error y fue porque solo estaba configurando authCookie, pero no estaba configurando el usuario httpcontext. He aquí:

HttpCookie authCookie = HttpContext.CurrentRequest.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
    //Extract the forms authentication cookie
    FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

    // If caching roles in userData field then extract
    string[] roles = authTicket.UserData.Split(new char[] { '|' });

    // Create the IIdentity instance
    IIdentity id = new FormsIdentity(authTicket);

    // Create the IPrinciple instance
    IPrincipal principal = new GenericPrincipal(id, roles);

    // Set the context user 
    HttpContext.Current.User = principal;
}

Un agradecimiento especial a esta publicación para el código

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top