настройка свойств профиля в asp.net - PullRequest
1 голос
/ 21 июня 2009

Я создал свою собственную форму регистрации и создал пользователя с помощью класса Membership.

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

После того, как пользователь создан с помощью кода about, я пытаюсь установить некоторые свойства профиля, например, так

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

Однако я получаю следующее сообщение об исключении

Это свойство нельзя установить для анонимных пользователей.

Есть идеи, почему я получаю это?

Ответы [ 2 ]

2 голосов
/ 21 июня 2009

Я думаю, это потому, что вы не загрузили профиль первым (из БД / что бы вы ни использовали).

Ваш код может выглядеть следующим образом:

ProfileCommon p = Profile.GetProfile(tbxUsername.Text);
p.CountryCode = ddlCountry.SelectedValue;
p.DisplayName = tbxDisplayName.Text;
p.Save();
0 голосов
/ 12 января 2016

Я столкнулся с той же ошибкой, и это потому, что я только настраивал authCookie, но не настраивал пользователя httpcontext. Вот:

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

Отдельное спасибо этому посту за код!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...