Einstellen Profileigenschaften in asp.net
Frage
Ich habe mein eigenes Anmeldeformular und die Schaffung die Benutzer erstellt die Membership-Klasse.
MembershipCreateStatus status;
MembershipUser newUser = Membership.CreateUser(tbxUsername.Text,
tbxPassword.Text,
tbxEmail.Text,
null, null, true, out status);
Nachdem der Benutzer erstellt wird, den Code zu, ich versuche, wie so einige Profileigenschaften festlegen
Profile.CountryCode = ddlCountry.SelectedValue;
Profile.DisplayName = tbxDisplayName.Text;
Profile.Save();
Allerdings erhalte ich die folgende Ausnahmemeldung
Diese Eigenschaft kann nicht für anonyme Benutzer eingestellt werden.
Irgendwelche Ideen, warum im diese bekommen?
Lösung
Ich denke, das liegt daran, dass Sie das Profil nicht zuerst geholt (von DB / Was auch immer Sie verwenden).
Sie Code könnte wie folgt aussehen:
ProfileCommon p = Profile.GetProfile(tbxUsername.Text);
p.CountryCode = ddlCountry.SelectedValue;
p.DisplayName = tbxDisplayName.Text;
p.Save();
Andere Tipps
Ich lief in den gleichen Fehler und es war, weil ich nur die authCookie Einstellung, aber nicht die Httpcontext Benutzereinstellung. Siehe da:
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;
}
Besonderer Dank geht an dieser Beitrag für den Code!