Domanda

Quando avvio la mia domanda ottengo: La proprietà ConnectionString non è stata inizializzata.

web.config:

<connectionStrings>
    <add name="MyDB"
         connectionString="Data Source=localhost\sqlexpress;Initial Catalog=mydatabase;User Id=myuser;Password=mypassword;" />
</connectionStrings>

Lo stack è:

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

Sono abbastanza nuovo in .NET e non capisco questo. Ho trovato molte risposte su Google, ma nessuna ha risolto il mio problema.

Cosa significa? Il mio web.config è difettoso? La mia funzione è cattiva? La mia configurazione SQL non funziona correttamente (sto usando sqlexpress)?

Il mio problema principale qui è che non sono sicuro da dove iniziare a eseguire il debug di questo ... qualsiasi cosa potrebbe aiutare.

EDIT:

Codice di errore:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"],
CommandType.Text,
sqlQuery,
sqlParams);

sqlQuery è una query come " select * dalla tabella " ;. sqlParams non è rilevante qui.

L'altro problema qui è che la mia azienda usa MySQLHelper e non ho alcuna visibilità su di esso (ho solo una dll per una lib di aiuto). Ha funzionato bene in altri progetti, quindi sono al 99% che l'errore non proviene da qui.

Suppongo che se non c'è modo di eseguire il debug senza vedere il codice, dovrò aspettare per mettermi in contatto con la persona che ha creato questo aiutante per ottenere il codice.

È stato utile?

Soluzione

Il riferimento alla stringa di connessione dovrebbe essere fatto come tale:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);

ConfigurationManager.AppSettings [" ConnectionString "] cercherebbe in AppSettings qualcosa che si chiama ConnectionString , che non troverebbe. Ecco perché il tuo messaggio di errore indicava " ConnectionString " la proprietà non è stata inizializzata , perché sta cercando una proprietà inizializzata di AppSettings denominata ConnectionString .

ConfigurationManager.ConnectionStrings [" MyDB "]. ConnectionString indica di cercare la stringa di connessione denominata " MyDB " ;.

Ecco qualcuno che parla dell'uso delle stringhe di connessione web.config

Altri suggerimenti

Questo errore viene visualizzato quando un'origine dati tenta di collegarsi ai dati ma non è possibile perché non riesce a trovare la stringa di connessione. Nella mia esperienza, ciò non è generalmente dovuto a un errore nel web.config (anche se non ne sono sicuro al 100%).

Se stai assegnando a livello di codice un'origine dati (come una SqlDataSource) o stai creando una query (cioè usando una combinazione SqlConnection / SqlCommand), assicurati di avergli assegnato una ConnectionString.

SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString;

Se si collega un elemento di database a un'origine dati (ovvero GridView o ComboBox a un'origine dati Sql), assicurarsi che l'origine dati sia assegnata a una delle stringhe di connessione.

Pubblica il tuo codice (affinché l'elemento databound e web.config siano sicuri) e possiamo dare un'occhiata.

EDIT: Penso che il problema sia che stai cercando di ottenere la stringa di connessione dall'area AppSettings e, a livello di programmazione, non è dove esiste. Prova a sostituirlo con ConfigurationManager.ConnectionStrings [" ConnectionString "]. ConnectionString (se ConnectionString è il nome della tua stringa di connessione.)

La stringa di connessione è non in AppSettings .

Quello che stai cercando è in:

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...

Usa [] invece di () come nell'esempio seguente.

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
            DataTable data = new DataTable();
            DataSet ds = new DataSet();

Semplicemente nell'uso di Code Behind Page::

SqlConnection con = new SqlConnection("Data Source = DellPC; Initial Catalog = Account; user = sa; password = admin");

Dovrebbe funzionare bene

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top