Leer la cadena de conexión de web.config

253

¿Cómo puedo leer una cadena de conexión de un web.configarchivo en una clase pública contenida dentro de una biblioteca de clases?

He intentado:

WebConfigurationManager

ConfigurationManager

Pero estas clases no se reconocen dentro de mi biblioteca de clases.

chamara
fuente

Respuestas:

177

Agregar System.Configurationcomo referencia.

Por alguna extraña razón no está incluido por defecto.

peteisace
fuente
510

Debe agregar una referencia System.Configurationy luego usar:

System.Configuration.ConfigurationManager.
    ConnectionStrings["connectionStringName"].ConnectionString;
Muhammad Akhtar
fuente
19
MSDN, configuración del sistema . Que necesita 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
fuente
3
"Agregue una referencia en la parte superior de su archivo de código" => esa es una directiva de uso, ¡no una referencia!
Mishax
25

Agregar System.Configurationcomo referencia entonces:

 using System.Configuration;

 ...

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

Supongo que debe agregar una referencia al ensamblaje System.Configuration si aún no se ha agregado.

Además, es posible que deba insertar la siguiente línea en la parte superior de su archivo de código:

using System.Configuration;
Akram Shahda
fuente
Typo, debería estar usando System.Configuration;
Nick Binnet
14

En VB: esto debería funcionar

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

En C#ella estaría (según el comentario de Ala)

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
fuente
Esos paréntesis deben ser paréntesis.
Charles Burns
1
@ CharlesBurns, gracias, escribí en VB por error, en C # seguro que debería ser ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
Ahh, ni siquiera me di cuenta de que era VB. Pensé que era un error tipográfico. En cierto modo, mi error también.
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))

DEBAJO DEL CÓDIGO DE ARCHIVO DE CONFIGURACIÓN WEB

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

En el código ABCD anterior se encuentra el nombre de la conexión

subramanya46
fuente
Adición: además del indexador que acepta el nombre de la cadena de conexión, también se le permite usar índices enteros, lo cual es útil si desea leer todas las cadenas de conexión en un forbucle ( for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }) y hacerlas seleccionables en un cuadro combinado. Con var numOfConnections = ConfigurationManager.ConnectionStrings.Count;usted puede determinar cuántas cadenas de conexión existen. En este ejemplo conn.Namecontiene el nombre de la conexión.
Matt
11

Debe invocar esta clase en la parte superior de su página o clase:

using System.Configuration;

Luego puede usar este Método que devuelve la cadena de conexión para que esté lista para pasar al objeto sqlconnection para continuar su trabajo de la siguiente manera:

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

Solo para hacer una aclaración clara, este es el valor en la configuración web:

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>
Ahmed Elbatt
fuente
En el proyecto web es mejor usar WebConfigurationManager en System.Web.Configuration.
BJladu4
9
using System.Configuration;


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


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

Recuerde no usar ConnectionStrings [index] porque podría utilizar la configuración y portabilidad global de la máquina

cyberspiritwebsolutions ugo
fuente
2

Primero agregue esto:

using System.Configuration;
Ali
fuente
1

Todo el mundo parece estar sugiriendo que agregar

using System.Configuration;

cual es verdad.

Pero, ¿puedo sugerirle que piense en instalar la extensión Visual Studio de ReSharper?

Con esto instalado, en lugar de ver un error que indica que una clase no está definida, verá un mensaje que le indica en qué ensamblado se encuentra y le pregunta si desea que agregue la instrucción de uso necesaria.

Jeff Dege
fuente