Comment corriger "la propriété ConnectionString n'a pas été initialisée"

Lorsque je démarre mon application, j'obtiens: la propriété ConnectionString n'a pas été initialisée.

Web.config:

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

La pile en cours:

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

je suis assez nouveau à .NET et je ne comprends pas celui-ci. J'ai trouvé beaucoup de réponses sur Google, mais aucune n'a vraiment corrigé mon problème.

ça veut dire Quoi? Est de mon site web.config mauvais? Est ma fonction de mauvais? Est-ce que ma configuration SQL ne fonctionne pas correctement (j'utilise sqlexpress)?

mon principal problème ici est que je ne sais pas par où commencer pour déboguer ceci... rien pourrait l'aider.

EDIT:

code de défaillance:

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

sqlQuery est une requête comme "select * from table". sqlParams n'est pas pertinent ici.

l'autre problème ici est que mon entreprise utilise MySQLHelper, et je n'ai aucune visibilité dessus (seulement une dll pour un helper lib). Il a bien fonctionné dans d'autres projets, donc je suis à 99% que le l'erreur ne vient pas de là.

je suppose que s'il n'y a aucun moyen de le déboguer sans voir le code, je vais devoir attendre pour entrer en contact avec la personne qui a créé ce helper afin d'obtenir le code.

29
demandé sur marcgg 2009-06-17 19:30:34

4 réponses

référencement de la chaîne de connexion doit être fait comme tel:

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

ConfigurationManager.AppSettings["ConnectionString"] cherche dans le AppSettings quelque chose ConnectionString, qu'il ne serait pas trouver. C'est pourquoi votre message d'erreur indiquait "ConnectionString" property has not been initialized, parce qu'il cherche une propriété initialisée de AppSettingsConnectionString.

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString indique de rechercher la chaîne de connexion nommée "MyDB".

voici quelqu'un qui parle d'utiliser web.connexion de configuration chaînes de caractères

28
répondu kscott 2014-07-14 15:46:51

vous obtenez cette erreur quand une source de données tente de se lier aux données mais ne le peut pas parce qu'elle ne peut pas trouver la chaîne de connexion. D'après mon expérience, cela n'est généralement pas dû à une erreur dans le web.config (même si je ne suis pas sûr à 100%).

si vous assignez une source de données (comme une source Sqldatas) ou créez une requête (c.-à-d. en utilisant une combinaison SqlConnection/SqlCommand), assurez-vous que vous lui avez assigné une chaîne de connexion.

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

si vous vous accrochez un élément lié aux données à une source de données (c'est à dire un GridView ou zone de liste déroulante à un SqlDataSource), assurez-vous que la source de données est affecté à l'une de vos chaînes de connexion.

postez votre code (pour l'élément databound et le web.config pour être sûr) et nous pouvons prendre un coup d'oeil.

EDIT: je pense que le problème est que vous essayez d'obtenir la chaîne de connexion à partir de la zone AppSettings, et programmatiquement ce n'est pas là où elle existe. Essayez de remplacer qu'avec ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString (si ConnectionString est le nom de votre chaîne de connexion.)

16
répondu Matthew Jones 2009-06-17 15:47:15

La chaîne de connexion est AppSettings.

Ce que vous cherchez est dans:

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...
3
répondu mbillard 2009-06-17 15:50:58

Utilisez [] au lieu de () comme dans l'exemple ci-dessous.

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
            DataTable data = new DataTable();
            DataSet ds = new DataSet();
0
répondu Fadao 2012-11-28 21:30:12