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.

Réponses:


177

Ajouter System.Configurationcomme référence.

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



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

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;

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;

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

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


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>

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

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


2

Ajoutez d'abord ceci:

using System.Configuration;

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.