Domanda

Ho creato il mio modulo di iscrizione e ho creato l'utente utilizzando la classe di appartenenza.

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

Dopo che l'utente è stato creato usando il codice about, provo a impostare alcune proprietà del profilo in questo modo

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

Comunque ricevo il seguente messaggio di eccezione

Questa proprietà non può essere impostata per utenti anonimi.

Qualche idea sul perché sto ottenendo questo?

È stato utile?

Soluzione

Penso che ciò sia dovuto al fatto che non hai recuperato prima il profilo (da DB / Qualunque cosa tu stia utilizzando).

il tuo codice potrebbe essere simile al seguente:

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

Altri suggerimenti

Ho riscontrato lo stesso errore ed è stato perché stavo solo impostando authCookie, ma non impostando l'utente httpcontext. Ecco:

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 ringraziamento speciale a questo post per il codice!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top