Como corrigir “A propriedade ConnectionString não foi inicializado”
-
06-07-2019 - |
Pergunta
Quando eu começar a minha candidatura eu recebo:. A propriedade ConnectionString não foi inicializado
Web.config:
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=localhost\sqlexpress;Initial Catalog=mydatabase;User Id=myuser;Password=mypassword;" />
</connectionStrings>
A pilha sendo:
System.Data.SqlClient.SqlConnection.PermissionDemand() +4876643
System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) +20
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.SqlClient.SqlConnection.Open() +122
Eu sou bastante novo para .NET e eu não receber um presente. Eu encontrei um monte de respostas no Google, mas nenhum realmente fixa o meu problema.
O que isso significa? É o meu web.config ruim? É minha função ruim? É minha configuração SQL não está funcionando corretamente (estou usando sqlexpress)?
O meu principal problema aqui é que eu não tenho certeza por onde começar a depurar isso ... nada ajudaria.
EDIT:
código failling:
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"],
CommandType.Text,
sqlQuery,
sqlParams);
SQLQuery é uma consulta como "* select da tabela". sqlParams não é relevante aqui.
O outro problema aqui é que a minha empresa utiliza MySQLHelper, e eu não têm visibilidade sobre ele (só tem uma dll para uma lib helper). Tem sido muito bem trabalhando em outros projetos, então eu sou 99% que o erro não vem aqui.
Eu acho que se não há nenhuma maneira de debuging sem ver o código eu vou ter que esperar para entrar em contato com a pessoa que criou esse auxiliar, a fim de obter o código.
Solução
Fazendo referência a seqüência de conexão deve ser feito como tal:
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);
ConfigurationManager.AppSettings["ConnectionString"]
estaria procurando na AppSettings
por algo chamado ConnectionString
, que não iria encontrar. É por isso que a sua mensagem de erro indicada a "ConnectionString" property has not been initialized
, porque ele está à procura de uma propriedade inicializado de AppSettings
ConnectionString
nomeado.
instrui ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString
para procurar a cadeia de conexão com o nome "MyDB".
Aqui está alguém falando sobre o uso de seqüências de conexão web.config
Outras dicas
Você recebe este erro quando uma fonte de dados tentativas de vincular a dados, mas não pode porque ele não pode encontrar a seqüência de conexão. Na minha experiência, isso não é geralmente devido a um erro no web.config (embora eu não estou 100% de certeza disso).
Se você estiver atribuindo programaticamente uma fonte de dados (como um SqlDataSource) ou a criação de uma consulta (ou seja, usando um SqlConnection / SqlCommand combinação), certifique-se de que lhe é atribuído um ConnectionString.
SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString;
Se você ligar um elemento de ligação de dados a uma fonte de dados (ou seja, um GridView ou ComboBox a um SqlDataSource), certifique-se a fonte de dados é atribuído a um de seus seqüências de conexão.
Post seu código (para o elemento de ligação de dados e o web.config para ser seguro) e podemos dar uma olhada nisso.
EDIT: Eu acho que o problema é que você está tentando obter a seqüência de conexão da área de AppSettings, e programática que não é onde ele existe. Tente substituir isso com ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString
(se ConnectionString é o nome da sua cadeia de conexão.)
A seqüência de conexão é não na AppSettings .
O que você está procurando em:
System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...
Uso [] em vez de () abaixo como exemplo.
SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
DataTable data = new DataTable();
DataSet ds = new DataSet();
Simplesmente no código por trás uso Página: -
SqlConnection con = new SqlConnection("Data Source = DellPC; Initial Catalog = Account; user = sa; password = admin");
Ele deve funcionar muito bem