J'essaie d'accéder à connectionStrings
à partir du fichier de configuration. Le code est ASP.NET + C #. J'ai ajouté System.Configuration
à la référence et aussi mentionné avec using. Mais il n’accepterait toujours pas l’Assemblée.
J'utilise VSTS 2008. Une idée de ce qui pourrait en être la raison?
Une autre chose étrange est le nom d'assembly indiqué par "System.configuration", un c minuscule qui n'est pas la façon dont les noms sont affichés pour les autres assemblys système.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace Utility
{
public class CommonVariables
{
public static String ConnectionString
{
get { return ConfigurationManager.ConnectionStrings["EmployeeEntities"].ConnectionString; }
}
}
}
Config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="qbankEntities" connectionString="metadata=res://*/qbankModel.csdl|res://*/qbankModel.ssdl|res://*/qbankModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
Ok .. cela a fonctionné après le redémarrage du VSTS. Le link a suggéré la solution au même problème. J'aurais aimé pouvoir le voir avant. :)
Il n'est pas seulement nécessaire d'utiliser le namespace System.Configuration
. Vous devez également ajouter la référence à Assembly System.Configuration.dll
, by
System.Configuration
. Cela fonctionnera à coup sûr . Aussi pour la NameValueCollection
vous devez écrire:
using System.Collections.Specialized;
Dans votre projet, cliquez avec le bouton droit de la souris sur Ajouter une référence ... , dans l'onglet .NET, recherchez le nom du composant System.Configuration
et cliquez sur OK.
using System.Configuration
indique au compilateur/IntelliSense de rechercher dans cet espace de noms les classes que vous utilisez. Sinon, vous devrez utiliser le nom complet (System.Configuration.ConfigurationManager
) à chaque fois. Mais si vous n'ajoutez pas la référence, cet espace de noms/classe ne sera trouvé nulle part.
Notez qu'un DLL peut avoir n'importe quel espace de noms. Ainsi, le fichier System.Configuration.dll
pourrait, en théorie, avoir l'espace de noms Some.Random.Name
. Par souci de clarté/cohérence, ils sont généralement les mêmes, mais il existe des exceptions.
Ajouter cette réponse, car aucune des solutions suggérées ne fonctionne pour moi.
- Cliquez avec le bouton droit sur l'onglet références pour ajouter une référence.
- Cliquez sur l'onglet Assemblies
- Recherchez 'System.Configuration'
- Cliquez sur OK.
J'ai eu une meilleure solution pour le problème configurationmanager does not exist in the current context
.
Pour une chaîne de connexion en lecture à partir de web.config
, nous devons utiliser la classe ConfigurationManager
et sa méthode. Si vous souhaitez utiliser, vous devez ajouter un espace de noms à l'aide de System.Configuration
;
Bien que vous ayez utilisé cet espace de noms, lorsque vous essayez d'utiliser la classe ConfigurationManager
, le système affiche alors une erreur «Le gestionnaire de configuration n'existe pas dans le contexte actuel» .
ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString;
Si vous recevez beaucoup d’avertissements (dans mon cas 64 dans une solution!) Comme
CS0618: 'ConfigurationSettings.AppSettings' est obsolète: 'Cette méthode est obsolète, elle est remplacée par System.Configuration! System.Configuration.ConfigurationManager.AppSettings'
comme vous mettez à niveau un projet plus ancien, vous pouvez gagner beaucoup de temps comme suit:
System.Configuration
en tant que référence à votre section Références .Ajoutez les deux instructions using
suivantes en haut de chaque fichier de classe (.cs
):
using System.Configuration;
using ConfigurationSettings = System.Configuration.ConfigurationManager;
Par ce changement, toutes les occurrences de
ConfigurationSettings.AppSettings["mySetting"]
référencera maintenant le bon gestionnaire de configuration, et non plus celui obsolète, et tous les avertissements CS0618 disparaîtront immédiatement.
Bien sûr, gardez à l'esprit qu'il s'agit d'un hack rapide. Sur le long terme, vous devriez envisager de refactoriser le code.
Êtes-vous sûr d'avoir ajouté une référence à .NET Assembly et pas autre chose? Je supprime votre référence, puis j'essaie de la rajouter en veillant à la sélectionner dans l'onglet .NET de la boîte de dialogue de référence de Visual Studio. La version la plus récente devrait être 2.0.0.0 dans GAC.
Pour un contrôle d'intégrité, essayez de créer un nouveau projet d'application Web, ouvrez le code correspondant à la page Default.aspx. Ajoutez une ligne dans Page_Load pour accéder à votre chaîne de connexion.
System.Configuration devrait être ajouté comme référence par défaut. Vous devriez également voir l'instruction using en haut de votre fichier de code déjà.
Mon code derrière le fichier ressemble maintenant à ceci et compile sans problèmes.
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string connString = ConfigurationManager.ConnectionStrings["MyConnectionStringName"].ConnectionString;
}
}
}
Cela suppose que j'ai une chaîne de connexion dans mon Web.config avec un nom égal à "MyConnectionStringName" comme si ...
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="MyConnectionStringName"
connectionString="Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Oui, c'est élémentaire, je sais. Mais si vous n'avez pas de meilleures idées, il est parfois utile de vérifier si quelque chose de très simple devrait marcher.
Ajouter le System.Configuration
comme référence à tous les projets résoudra ce problème.
Allez à Project
-> Add Reference
Dans la zone qui apparaît, cliquez sur l'onglet All assemblies
dans la liste de gauche.
Dans la liste centrale, faites défiler jusqu'à System.Configuration
et assurez-vous que la case est cochée.
Cliquez sur ok pour postuler et vous pourrez maintenant accéder à la classe ConfigurationManager
.
Si ce code se trouve dans un projet séparé, comme un projet de bibliothèque, par exemple, vous n'aurez pas à ajouter une référence à system.configuration.
maintenant vous pouvez:
using System.Configuration;
Vous pouvez également obtenir cette erreur si vous ajoutez par erreur une référence à un projet différent, non lié. Vérifiez si cela s'applique à vous.
Pour résoudre ce problème, accédez à Explorateur de solutions et cliquez avec le bouton droit de la souris sur référence et cliquez sur ajouter une référence et choisissez .net et recherchez system.configuration, sélectionnez un clic ok