Question

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 sur .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 cela signifie? 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 principal problème ici est que je ne sais pas par où commencer pour déboguer cela ... rien n’aidera.

EDIT:

Code de fin:

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, c’est que mon entreprise utilise MySQLHelper et que je n’ai aucune visibilité dessus (je n’ai qu’une dll pour une librairie auxiliaire). Cela a bien fonctionné dans d'autres projets, je suis donc à 99% que l'erreur ne vient pas d'ici.

Je suppose que s'il n'y a aucun moyen de le déboguer sans voir le code, je devrai attendre avant de contacter la personne qui a créé cet assistant pour obtenir le code.

Était-ce utile?

La solution

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 "]] rechercherait dans AppSettings quelque chose nommé ConnectionString , qu'il ne trouverait pas. C'est pourquoi votre message d'erreur indiquait le " ConnectionString " la propriété n'a pas été initialisée , car elle recherche une propriété initialisée de AppSettings nommée ConnectionString .

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

Voilà quelqu'un qui parle d'utiliser les chaînes de connexion web.config

.

Autres conseils

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 à l'aide d'une combinaison SqlConnection / SqlCommand), assurez-vous de lui avoir attribué une ConnectionString.

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

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

Envoyez 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.

MODIFIER: je pense que le problème est que vous essayez d'extraire la chaîne de connexion de la zone AppSettings et, par programme, que ce n'est pas là où elle existe. Essayez de remplacer cela par ConfigurationManager.ConnectionStrings [" ConnectionString &];] ConnectionString (si ConnectionString est le nom de votre chaîne de connexion.)

La chaîne de connexion n'est pas dans AppSettings .

Ce que vous recherchez se trouve dans:

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

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();

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

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

Cela devrait fonctionner correctement

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top