Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Exceção Lançada

Pessoal, bom dia

estou seguindo o curso, e aparentemente fiz algo errado.

estou recebendo na hora de criar a Role! (Obs: não uso banco de dados MySql, uso Sql)

System.AggregateException: 'One or more errors occurred. (A second operation was started on this context before a previous operation completed. This is usually caused by different threads concurrently using the same instance of DbContext. For more information on how to avoid threading issues with DbContext, see https://go.microsoft.com/fwlink/?linkid=2097913.)'

---- O DBContext ----

public class AuthDbContext : IdentityDbContext<IdentityUser<int>, IdentityRole<int>, int>
    {
        public AuthDbContext(DbContextOptions<AuthDbContext> opt) : base(opt)
        {
        }
    }

----- O metodo que gera a exceção -----


 public Result CadastraUsuario(CriarUsuarioDto criaDto)
        {
            Usuario usuario = _mapper.Map<Usuario>(criaDto);
            IdentityUser<int> usuarioIdentity = _mapper.Map<IdentityUser<int>>(usuario);
            Task<IdentityResult> resultado = _userManager.CreateAsync(usuarioIdentity, criaDto.Password);
            var criarRole = _roleManager.CreateAsync(new IdentityRole<int>("admin")).Result;
            var adicionaRole = _userManager.AddToRoleAsync(usuarioIdentity, "admin").Result;
            if (resultado.Result.Succeeded)
            {
                var code = _userManager.GenerateEmailConfirmationTokenAsync(usuarioIdentity).Result;
                var encodedCode = HttpUtility.UrlEncode(code);

                _emailService.EnviarEmail(new[] { usuarioIdentity.Email }, "Link de Ativação", usuarioIdentity.Id, $"{encodedCode}");
                return Result.Ok().WithSuccess(encodedCode);
            }
            return Result.Fail("Falha ao cadastrar usuário!");
        }

Alguém consegue me dar um norte?

1 resposta
solução!

Opa, boa tarde!

Isso ocorreu comigo e para resolver você deve tratar uma operação assíncrona anterior, ficando desse jeito!

Resolução do problema, obter o resultado da variável resultIdentity com . Result e corrigir o if para pegar apenas o .Succeeded

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software