Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá!
O erro System.NullReferenceException indica que algum objeto está com valor null. Como a exceção acontece ao executar connection.Open(), é bem provável que o problema não esteja em connection.State, mas sim no retorno de ObterConexao().
Vale conferir alguns pontos:
ObterConexao() realmente está retornando uma instância de conexão e não null.appsettings.json).Connection está conseguindo ler essa configuração antes de criar a conexão.Uma forma de confirmar é colocar um ponto de interrupção (breakpoint) logo após:
using var connection = new Connection().ObterConexao();
E ve se a variável connection possui uma instância válida ou se já está null.
Se tudo estiver configurado corretamente e o problema continuar, compartilhe aqui o código da classe Connection, especialmente o método ObterConexao(), para que a comunidade consiga identificar a causa com mais precisão.
Também estou tendo o mesmo problema. E a resposta acima não ajuda a identificar a solução do problema.
Resolvi o problema usando o Claude Code, segue a resposta:
Causa raiz: não é um bug na sua classe Connection nem no Program.cs em si — o connection.Open() na linha 8 é executado com sucesso silenciosamente, mas o getter na linha 9 (connection.State) lança uma exceção dentro de Microsoft.Data.SqlClient.SqlConnection.get_State():
System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.Data.SqlClient.SqlConnection.get_State()
at Program.
Seu try/catch estava mascarando o rastreamento de pilha (stack trace) real ao imprimir apenas ex.Message — por isso parecia apenas uma Exceção de Referência Nula (NullReferenceException) genérica, sem nenhuma pista de onde ela vinha.
O que está faltando: o projeto tem como alvo o net6.0 (ScreenSound.csproj), que atingiu o fim do suporte e não é mais uma estrutura (framework) contra a qual o pacote Microsoft.Data.SqlClient (v6.x/7.x) é compilado/testado. Nessa combinação, o pacote recorre a um shim de compatibilidade netstandard2.0 cujos internos do SqlConnection não são totalmente inicializados, então .State (e provavelmente outras propriedades) lançam uma Exceção de Referência Nula mesmo que o Open() em si funcione.
Eu confirmei isso com uma reconstrução (rebuild) limpa:
A única alteração necessária é em ScreenSound/ScreenSound.csproj: