настройка свойств профиля в asp.net
Вопрос
Я создал собственную форму регистрации и создал пользователя с помощью класса 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();
Однако я получаю следующее сообщение об исключении
Это свойство нельзя установить для анонимных пользователей.
Есть идеи, почему я получаю это?
Решение
Думаю, это потому, что вы сначала не загрузили профиль (из БД / что бы вы ни использовали).
ваш код может выглядеть следующим образом:
ProfileCommon p = Profile.GetProfile(tbxUsername.Text);
p.CountryCode = ddlCountry.SelectedValue;
p.DisplayName = tbxDisplayName.Text;
p.Save();
Другие советы
Я столкнулся с той же ошибкой, потому что я только настраивал 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;
}
Особая благодарность этот пост для кода!
Не связан с StackOverflow