impostazione delle proprietà del profilo in asp.net
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?
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!