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.

Respuestas:


177

Agregar System.Configurationcomo referencia.

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



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
"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;

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;

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

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


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>

En el proyecto web es mejor usar WebConfigurationManager en System.Web.Configuration.
BJladu4

9
using System.Configuration;


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

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


2

Primero agregue esto:

using System.Configuration;

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.