wake-up-neo.com

Wie man das Problem "Die ConnectionString-Eigenschaft wurde nicht initialisiert" behebt

Wenn ich meine Anwendung starte, wird Folgendes angezeigt: Die ConnectionString-Eigenschaft wurde nicht initialisiert.

Web.config:

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

Der Stapel ist:

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

Ich bin ziemlich neu in .NET und ich verstehe dieses nicht. Ich habe viele Antworten auf Google gefunden, aber keine hat mein Problem wirklich behoben.

Was bedeutet das? Ist meine web.config schlecht? Ist meine funktion schlecht Funktioniert meine SQL-Konfiguration nicht richtig (ich verwende sqlexpress)?

Mein Hauptproblem hier ist, dass ich nicht sicher bin, wo ich anfangen soll, dies zu debuggen ... irgendetwas würde helfen.

BEARBEITEN:

Sicherheitscode:

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

sqlQuery ist eine Abfrage wie "select * from table". sqlParams ist hier nicht relevant.

Das andere Problem hier ist, dass mein Unternehmen MySQLHelper verwendet und ich keinen Überblick darüber habe (nur eine DLL für eine Helfer-Bibliothek). Es hat in anderen Projekten gut funktioniert, daher bin ich zu 99% der Meinung, dass der Fehler nicht von hier kommt.

Ich denke, wenn es keine Möglichkeit zum Debuggen gibt, ohne den Code zu sehen, muss ich warten, um mit der Person in Kontakt zu treten, die diesen Helfer erstellt hat, um den Code zu erhalten.

34
marcgg

Das Referenzieren der Verbindungszeichenfolge sollte folgendermaßen erfolgen:

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

ConfigurationManager.AppSettings["ConnectionString"] würde im AppSettings nach etwas mit dem Namen ConnectionString suchen, das es nicht finden würde. Aus diesem Grund wurde in Ihrer Fehlermeldung das "ConnectionString" property has not been initialized, da nach einer initialisierten Eigenschaft von AppSettings mit dem Namen ConnectionString gesucht wird.

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString weist an, nach der Verbindungszeichenfolge "MyDB" zu suchen.

Hier spricht jemand über die Verwendung von web.config-Verbindungszeichenfolgen

28
kscott

Diese Fehlermeldung wird angezeigt, wenn eine Datenquelle versucht, Daten zu binden, dies jedoch nicht kann, da die Verbindungszeichenfolge nicht gefunden werden kann. Nach meiner Erfahrung liegt dies normalerweise nicht an einem Fehler in der web.config (obwohl ich mir da nicht 100% sicher bin).

Wenn Sie eine Datenquelle programmgesteuert zuweisen (z. B. eine SqlDataSource) oder eine Abfrage erstellen (z. B. mithilfe einer Kombination aus SqlConnection und SqlCommand), müssen Sie ihr einen ConnectionString zuweisen.

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

Wenn Sie ein datengebundenes Element an eine Datenquelle anschließen (z. B. eine GridView- oder ComboBox-Komponente an eine SqlDataSource-Komponente), stellen Sie sicher, dass die Datenquelle einer Ihrer Verbindungszeichenfolgen zugewiesen ist.

Geben Sie Ihren Code ein (damit das datengebundene Element und die web.config sicher sind) und wir können ihn uns ansehen.

BEARBEITEN: Ich denke, das Problem ist, dass Sie versuchen, die Verbindungszeichenfolge aus dem Bereich AppSettings abzurufen, und programmgesteuert ist dies nicht der Fall, in dem sie vorhanden ist. Versuchen Sie, dies durch ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString Zu ersetzen (wenn ConnectionString der Name Ihrer Verbindungszeichenfolge ist).

16
Matthew Jones

Die Verbindungszeichenfolge lautet nicht in AppSettings .

Was Sie suchen, ist in:

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

Einfach in Code Behind Page verwenden: -

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

Es sollte gut funktionieren

0
Priyank Raunak

Verwenden Sie [] anstelle von () wie im folgenden Beispiel.

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