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

[Bug] Erro Object reference not set to an instance of an object. at UsuariosApi.Controllers.UsuarioController.CadastraUsuario(CreateUsuarioDto dto) no Construtor UsuarioController

No capitulo 2, aula 5:

Com o construtor da controller, estava recebendo o erro:

        private IMapper _mapper;
        private UserManager<Usuario> _userManage;

        public UsuarioController(IMapper mapper)
        {
            _mapper = mapper;
        }

ERRO:

System.NullReferenceException: Object reference not set to an instance of an object.
   at UsuariosApi.Controllers.UsuarioController.CadastraUsuario(CreateUsuarioDto dto) in C:\_DEV\Alura\C#\Caminho C#\.Net 6\Identity\UsuariosApi\Controllers\UsuarioController.cs:line 27
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

tive que alterar para:

        private IMapper _mapper;
        private UserManager<Usuario> _userManage;

        public UsuarioController(IMapper mapper, UserManager<Usuario> userManage)
        {
            _mapper = mapper;
            _userManage = userManage;
        }
1 resposta
solução!

Oi Marcelo! Tudo bem?

O erro "Object reference not set to an instance of an object" geralmente ocorre quando uma dependência não foi corretamente injetada no controlador, resultando em uma referência nula.

No seu caso, o problema foi resolvido ao adicionar o UserManager<Usuario> como um parâmetro no construtor do UsuarioController. Isso é necessário porque, sem essa injeção, a variável _userManage não estava sendo inicializada, causando o erro quando você tentava usá-la.

Fico feliz que tenha conseguido resolver o problema que você encontrou e agradeço por compartilhar a sua solução aqui no fórum! Sei que ajudará outros alunos que estiverem enfrentando o mesmo tipo de problema.

Bons estudos!