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?

War es hilfreich?

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!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top