2009-06-21 10 views
1

J'ai créé mon propre formulaire d'inscription et créé l'utilisateur en utilisant la classe Membership.Définition des propriétés de profil dans asp.net

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

Une fois l'utilisateur créé à l'aide du code au sujet, je tente de définir certaines propriétés de profil comme si

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

Cependant, je reçois le message d'exception suivante

Cette propriété ne peut pas être pour les utilisateurs anonymes.

Des idées pourquoi je reçois cela?

Répondre

2

Je pense que c'est parce que vous n'avez pas récupéré le profil en premier (à partir de DB/Quoi que vous utilisiez).

votre code pourrait ressembler à ce qui suit:

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

je suis tombé sur la même erreur et c'était parce que je mettais seulement le authcookie, mais pas la mise à l'utilisateur HttpContext. Voir:

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 merci spécial à this post pour le code!

Questions connexes