2009-06-17 19 views
24

Po uruchomieniu aplikacji otrzymuję: Właściwość ConnectionString nie została zainicjowana.Jak naprawić "Właściwość ConnectionString nie została zainicjowana"

Web.config:

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

Stos istota:

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 

Jestem całkiem nowy .NET i nie rozumiem tego. Znalazłem wiele odpowiedzi w Google, ale żaden naprawdę nie naprawił mojego problemu.

Co to znaczy? Czy mój web.config jest zły? Czy moja funkcja jest zła? Czy moja konfiguracja SQL nie działa poprawnie (używam sqlexpress)?

Moim głównym problemem jest to, że nie jestem pewien, od czego zacząć debugowanie tego ... cokolwiek mogłoby pomóc.

EDIT:

Failling Kod:

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

sqlquery to zapytanie jak "select * from table". sqlParams nie ma tu zastosowania.

Innym problemem jest to, że moja firma używa MySQLHelper, a widoczność nie mam nad nim (tylko dll dla lib pomocnika). W innych projektach działa dobrze, więc w 99% błąd nie pochodzi stąd.

Domyślam się, że jeśli nie ma możliwości debugowania go bez obejrzenia kodu, będę musiał poczekać na skontaktowanie się z osobą, która utworzyła tego pomocnika, aby uzyskać kod.

+1

Czy możesz wysłać ciąg połączenia z webconfig, a kod błędu z niego korzystać? – kscott

+0

dodano niektóre informacje – marcgg

Odpowiedz

27

Odwoływanie ciąg połączenia powinny być wykonane jako takie:

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

ConfigurationManager.AppSettings["ConnectionString"] byłyby patrząc w AppSettings czegoś o nazwie ConnectionString, których nie znajdzie. Właśnie dlatego Twój komunikat o błędzie wskazywał na "ConnectionString" property has not been initialized, ponieważ szuka on zainicjowanej właściwości o nazwie AppSettings o nazwie ConnectionString.

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString instruuje, aby wyszukać ciąg połączenia o nazwie "MyDB".

Here is someone talking about using web.config connection strings

+0

Naprawiono! Czy to, co robię, jest złą praktyką? – marcgg

+0

Jak masz na myśli? Sposób, w jaki próbujesz odwołać się do ciągu połączenia, był niepoprawny, ale jeśli próbujesz odwołać się do wartości jakiegoś węzła AppSettings, byłby poprawny. – kscott

+0

Miałem na myśli, czy to źle, że otrzymałem ten ciąg połączenia? – marcgg

15

dostać ten błąd, gdy źródło danych próbuje powiązać z danymi, ale nie może, ponieważ nie może znaleźć ciąg połączenia. Z mojego doświadczenia wynika, że ​​zazwyczaj nie jest to spowodowane błędem w pliku web.config (chociaż nie jestem tego w 100% pewny).

Jeśli programowo przypisujesz źródło danych (takie jak SqlDataSource) lub tworzysz zapytanie (tj. Za pomocą kombinacji SqlConnection/SqlCommand), upewnij się, że przypisałeś mu wartość ConnectionString.

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

Jeśli podpinania się z danymi elementu do źródła danych (tj GridView lub ComboBox do SqlDataSource), upewnij się, że źródło danych jest przypisany do jednego z ciągów połączenia.

postu kod (dla elementu z danymi i web.config pewności) i możemy spojrzeć na niego.

EDYCJA: Myślę, że problem polega na tym, że próbujesz uzyskać ciąg połączenia z obszaru AppSettings i programowo tam, gdzie go nie ma. Spróbuj zastąpić to ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString (jeśli ConnectionString jest nazwą ciągu połączenia.)

+0

Dodałem kod, nie wiem, czy to sprawia, że ​​mój problem jest bardziej przejrzysty. – marcgg

+0

Nie jestem pewien, czy mogę go pobrać, czy powinienem przenieść położenie ciągu połączenia w web.config? – marcgg

+0

nie ma go w AppSettings btw – marcgg

3

Ciąg połączenia jest nie w AppSettings.

Czego szukasz w:

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

pomocą przycisku [] zamiast() jak poniżej przykład.

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