web-dev-qa-db-fra.com

Comment résoudre le problème "La propriété ConnectionString n'a pas été initialisée"

Lorsque je lance mon application, je reçois: La propriété ConnectionString n'a pas été initialisée.

Web.config:

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

La pile étant:

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 pour .NET et je ne comprends pas celui-ci. J'ai trouvé beaucoup de réponses sur Google, mais aucune n'a vraiment résolu mon problème.

Qu'est-ce que ça veut dire? Mon web.config est-il mauvais? Est-ce que ma fonction est mauvaise? Ma configuration SQL ne fonctionne-t-elle pas correctement (j'utilise sqlexpress)?

Mon problème principal ici est que je ne sais pas par où commencer pour déboguer ceci… n'importe quoi aiderait.

MODIFIER:

Code de décollement:

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

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

L’autre problème ici est que mon entreprise utilise MySQLHelper et que je n’ai aucune visibilité dessus (je n’ai qu’une dll pour une librairie d’aide). Cela a bien fonctionné dans d'autres projets, je suis donc à 99% que l'erreur ne vient pas d'ici.

J'imagine que s'il n'y a aucun moyen de résoudre le problème sans voir le code, je devrai attendre avant de contacter la personne qui a créé cet assistant pour obtenir le code.

34
marcgg

Le référencement de la chaîne de connexion doit être effectué en tant que tel:

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

ConfigurationManager.AppSettings["ConnectionString"] chercherait dans le AppSettings un nom nommé ConnectionString, qu’il ne trouverait pas. C'est pourquoi votre message d'erreur indiquait le "ConnectionString" property has not been initialized, car il recherche une propriété initialisée de AppSettings nommée ConnectionString.

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

Voici quelqu'un qui parle d'utiliser des chaînes de connexion web.config

28
kscott

Vous obtenez cette erreur lorsqu'une source de données tente de se lier à des données mais ne le peut pas car elle ne trouve pas la chaîne de connexion. D'après mon expérience, cela n'est généralement pas dû à une erreur dans le fichier web.config (bien que je ne sois pas sûr à 100% de cela).

Si vous affectez par programme une source de données (telle qu'un SqlDataSource) ou créez une requête (c'est-à-dire en utilisant une combinaison SqlConnection/SqlCommand), assurez-vous de lui avoir attribué un ConnectionString.

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

Si vous connectez un élément lié aux données à une source de données (c'est-à-dire un GridView ou un ComboBox à une SqlDataSource), assurez-vous que la source de données est affectée à l'une de vos chaînes de connexion.

Postez votre code (pour que l'élément databound et le composant web.config soient sûrs) et nous pourrons y jeter un coup d'œil.

(EDIT:) Je pense que le problème est que vous essayez d’obtenir la chaîne de connexion à partir de la zone AppSettings et que, par programme, elle n’existe pas. Essayez de remplacer cela par ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString (si ConnectionString est le nom de votre chaîne de connexion.)

16
Matthew Jones

La chaîne de connexion est not in AppSettings .

Ce que vous recherchez se trouve dans:

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

Simplement dans le code derrière l'utilisation de la page: -

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

Il devrait fonctionner parfaitement

0
Priyank Raunak

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

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