Lire la chaîne de connexion à partir de web.config

253

Comment puis-je lire une chaîne de connexion d'un web.configfichier dans une classe publique contenue dans une bibliothèque de classes?

J'ai essayé:

WebConfigurationManager

ConfigurationManager

Mais ces classes ne sont pas reconnues dans ma bibliothèque de classes.

chamara
la source

Réponses:

177

Ajouter System.Configurationcomme référence.

Pour une raison bizarre, il n'est pas inclus par défaut.

peteisace
la source
510

Vous devez ajouter une référence à System.Configuration, puis utiliser:

System.Configuration.ConfigurationManager.
    ConnectionStrings["connectionStringName"].ConnectionString;
Muhammad Akhtar
la source
19
MSDN, System.configuration . Il en a besoin System.Configuration.dll.
AechoLiu
66

C #

// Add a using directive at the top of your code file    
using System.Configuration;

// Within the code body set your variable    
string cs = ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;

VB

' Add an Imports statement at the top of your code file    
Imports System.Configuration

' Within the code body set your variable    
Dim cs as String = ConfigurationManager.ConnectionStrings("connectionStringName").ConnectionString
MDM
la source
3
"Ajoutez une référence en haut de votre fichier de code" => c'est une directive using, pas une référence!
Mishax
25

Ajoutez System.Configurationcomme référence puis:

 using System.Configuration;

 ...

 string conn = 
    ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;
nirmus
la source
19

Je suppose que vous devez ajouter une référence à l' assembly System.Configuration si cela n'a pas déjà été ajouté.

En outre, vous devrez peut-être insérer la ligne suivante en haut de votre fichier de code:

using System.Configuration;
Akram Shahda
la source
Typo, il devrait utiliser System.Configuration;
Nick Binnet
14

Dans VB: cela devrait fonctionner

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

Ce C#serait (selon le commentaire d'Ala)

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
la source
Ces parenthèses doivent être entre parenthèses.
Charles Burns
1
@ CharlesBurns, Merci, j'ai écrit dans VB par erreur, en C # bien sûr que ça devrait être ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
Ahh, je ne savais même pas que c'était VB. Je pensais que c'était une faute de frappe. D'une certaine manière, mon erreur aussi.
Charles Burns
13
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.DataVisualization.Charting;
using System.Web.UI.WebControls;  

C #

string constring = ConfigurationManager.ConnectionStrings["ABCD"].ConnectionString;
                using (SqlConnection con = new SqlConnection(constring))

CODE DE FICHIER WEB.CONFIG EN DESSOUS

<connectionStrings>
    <add name="ABCD" connectionString="Data Source=DESKTOP-SU3NKUU\MSSQLSERVER2016;Initial Catalog=TESTKISWRMIP;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>

Dans le code ci-dessus ABCD est le nom de la connexion

subramanya46
la source
Addition: Outre l'indexeur qui accepte le nom de la chaîne de connexion, il est également autorisé d'utiliser des indices entiers - ce qui est utile si vous souhaitez lire toutes les chaînes de connexion dans une forboucle ( for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }) et les rendre sélectionnables dans une zone de liste déroulante. Avec, var numOfConnections = ConfigurationManager.ConnectionStrings.Count;vous pouvez déterminer combien de chaînes de connexion existent. Dans cet exemple, conn.Namecontient le nom de la connexion.
Matt
11

Vous devez invoquer cette classe en haut de votre page ou classe:

using System.Configuration;

Ensuite, vous pouvez utiliser cette méthode qui renvoie la chaîne de connexion pour qu'elle soit prête à être transmise à l'objet sqlconnection pour continuer votre travail comme suit:

    private string ReturnConnectionString()
    {
       // Put the name the Sqlconnection from WebConfig..
        return ConfigurationManager.ConnectionStrings["DBWebConfigString"].ConnectionString;
    }

Juste pour clarifier, voici la valeur de la configuration Web:

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>
Ahmed Elbatt
la source
Dans le projet Web, il est préférable d'utiliser WebConfigurationManager dans System.Web.Configuration.
BJladu4
9
using System.Configuration;


string conn = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();
Saravanan G
la source
4
using System.Configuration;


string connString = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();

N'oubliez pas de ne pas utiliser ConnectionStrings [index] car vous pourriez utiliser Global Config and Portability

cyberspiritwebsolutions ugo
la source
2

Ajoutez d'abord ceci:

using System.Configuration;
Ali
la source
1

Tout le monde semble suggérer que l'ajout

using System.Configuration;

ce qui est vrai.

Mais pourrais-je suggérer que vous pensiez à installer l'extension Visual Studio de ReSharper?

Une fois qu'il est installé, au lieu de voir une erreur indiquant qu'une classe n'est pas définie, vous verrez une invite qui vous indique dans quel assembly elle se trouve, vous demandant si vous souhaitez qu'elle ajoute l'instruction using nécessaire.

Jeff Dege
la source