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?

Foi útil?

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
scroll top