configurar propriedades do perfil em asp.net
Pergunta
Eu criei meu próprio formulário de inscrição e criar o usuário usando a classe Membership.
MembershipCreateStatus status;
MembershipUser newUser = Membership.CreateUser(tbxUsername.Text,
tbxPassword.Text,
tbxEmail.Text,
null, null, true, out status);
Depois que o usuário é criado usando o código sobre, eu tentar definir algum perfil de imóveis como assim
Profile.CountryCode = ddlCountry.SelectedValue;
Profile.DisplayName = tbxDisplayName.Text;
Profile.Save();
No entanto eu recebo a seguinte mensagem de exceção
Esta propriedade não pode ser definida para usuários anônimos.
Todas as ideias por im recebendo este?
Solução
Eu acho que isso é porque você não trouxe o primeiro perfil (de DB / O que quer que você está usando).
Você código pode parecer como o seguinte:
ProfileCommon p = Profile.GetProfile(tbxUsername.Text);
p.CountryCode = ddlCountry.SelectedValue;
p.DisplayName = tbxDisplayName.Text;
p.Save();
Outras dicas
Eu corri para o mesmo erro e foi porque eu só estava arrumando a authCookie, mas não configurar o usuário HttpContext. Eis:
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;
}
Especial graças a este post para o código!
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow