3
respostas

erro curso asp net : Object Reference not set to an instance of an object

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Meu repositório: https://github.com/RobertOcsV/AluraProjects/tree/main/AluraCSharp/FormacaoCsharp/Curso2/ScreenSound.API-Aula4-Video4.3 baixei o projeto direto do repositório de vocês da aula 4.3 e mesmo assim enfrentei o mesmo problema, acredito que seja algum problema que o musica.Artista.Nome está vindo vazio, não entendo o motivo,

Mais do erro:System.NullReferenceException: Object reference not set to an instance of an object. at ScreenSound.API.Endpoints.MusicasExtensions.EntityToResponse(Musica musica) in E:\Tudo\github\AluraProjects\AluraCSharp\FormacaoCsharp\Curso2\ScreenSound.API-Aula4-Video4.3\ScreenSound.API\Endpoints\MusicasExtensions.cs:line 95 at ScreenSound.API.Endpoints.MusicasExtensions.<>c.b__3_0(Musica a) in E:\Tudo\github\AluraProjects\AluraCSharp\FormacaoCsharp\Curso2\ScreenSound.API-Aula4-Video4.3\ScreenSound.API\Endpoints\MusicasExtensions.cs:line 90 at System.Linq.Enumerable.SelectListIterator2.Fill(ReadOnlySpan1 source, Span1 destination, Func2 func) at System.Linq.Enumerable.SelectListIterator2.ToList() at ScreenSound.API.Endpoints.MusicasExtensions.EntityListToResponseList(IEnumerable1 musicaList) in E:\Tudo\github\AluraProjects\AluraCSharp\FormacaoCsharp\Curso2\ScreenSound.API-Aula4-Video4.3\ScreenSound.API\Endpoints\MusicasExtensions.cs:line 90 at ScreenSound.API.Endpoints.MusicasExtensions.<>c.b__0_0(DAL`1 dal) in E:\Tudo\github\AluraProjects\AluraCSharp\FormacaoCsharp\Curso2\ScreenSound.API-Aula4-Video4.3\ScreenSound.API\Endpoints\MusicasExtensions.cs:line 22 at lambda_method8(Closure, Object, HttpContext) at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.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.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)

HEADERS

Accept: / Host: localhost:7089 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Accept-Encoding: gzip, deflate, br, zstd Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7 Referer: https://localhost:7089/Swagger/index.html sec-ch-ua: "Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123" sec-ch-ua-mobile: ?0 sec-ch-ua-platform: "Windows" sec-fetch-site: same-origin sec-fetch-mode: cors sec-fetch-dest: empty

3 respostas

Olá, Robert! Como vai?

Pela descrição do erro e pelo stack trace fornecido, parece que você está enfrentando um problema clássico de referência nula. O erro System.NullReferenceException: Object reference not set to an instance of an object. indica que você está tentando acessar um membro de um objeto que não foi instanciado.

Na imagem que você compartilhou, o erro ocorre na linha onde você tenta criar um novo objeto MusicaResponse, acessando musica.Artista.Id e musica.Artista.Nome. Se o Artista de musica for null, você receberá esse erro ao tentar acessar Id ou Nome do Artista.

Vamos verificar algumas possíveis causas e soluções para esse problema:

  1. Verifique se o artista está sendo carregado corretamente: quando você recupera a musica do banco de dados, certifique-se de que o Artista associado também está sendo carregado. Se você estiver usando o Entity Framework, pode precisar incluir o artista usando o método Include para garantir que ele não seja null.

  2. Validação antes de acessar as propriedades: antes de acessar as propriedades do Artista, você pode verificar se Artista não é null. Isso pode ser feito com um simples if ou usando o operador de coalescência nula (?.) para acessar as propriedades de forma segura.

Espero que essas sugestões ajudem a resolver o seu problema.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Mas o que eu não entendo é que porque após baixar o projeto, refazer as migrations, refazendo o banco de dados do zero, não fica igual a do professor, pois na aula não é feito nenhuma conexão dinâmica do musicas.artistaID, e nem houve tratamento de nullable nas aulas, é problema de versão?

Oi Robert! Peço desculpa pela demora em responder.

Esses tratamentos a mais que você teve que realizar realmente se dá por conta das versões. Com o decorrer do avanço do .NET existem verificações que antes acabavam sendo desnecessárias, mas poderiam causar algum grande conflito, logo agora essas tratativas passaram a ser padrões durante a implementação.

Mas não se preocupe, qualquer situação que você tiver problemas sempre conte com a comunidade do fórum para te ajudar.

Boa sorte nos estudos!

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