Question

J'ai créé mon propre formulaire d'inscription et créé l'utilisateur à l'aide de la classe d'appartenance.

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

Une fois que l'utilisateur a été créé à l'aide du code sur, j'essaie de définir des propriétés de profil telles que

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

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

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

Avez-vous des idées sur la raison pour laquelle je l'obtiens?

Était-ce utile?

La solution

Je pense que c'est parce que vous n'avez pas d'abord récupéré le profil (à partir de DB / Peu importe ce que vous utilisez).

votre code pourrait ressembler à ceci:

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

Autres conseils

J'ai rencontré la même erreur et c’est parce que je configurais uniquement authCookie, mais pas l’utilisateur httpcontext. Voici:

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;
}

Remerciements à cet article pour le code!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top