establecer propiedades de perfil en asp.net
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?
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