Leia a cadeia de conexão do web.config

253

Como posso ler uma cadeia de conexão de um web.configarquivo em uma classe pública contida em uma biblioteca de classes?

Eu tentei:

WebConfigurationManager

ConfigurationManager

Mas essas classes não são reconhecidas na minha biblioteca de classes.

chamara
fonte

Respostas:

177

Adicione System.Configurationcomo referência.

Por algum motivo bizarro, não está incluído por padrão.

peteisace
fonte
510

Você precisa adicionar uma referência System.Configuratione depois usar:

System.Configuration.ConfigurationManager.
    ConnectionStrings["connectionStringName"].ConnectionString;
Muhammad Akhtar
fonte
19
MSDN, System.configuration . Precisa 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
fonte
3
"Adicione uma referência na parte superior do seu arquivo de código" => essa é uma diretiva de uso, não uma referência!
Mishax
25

Adicione System.Configurationcomo referência, então:

 using System.Configuration;

 ...

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

Eu acho que você precisa adicionar uma referência ao assembly System.Configuration , se isso ainda não tiver sido adicionado.

Além disso, pode ser necessário inserir a seguinte linha na parte superior do seu arquivo de código:

using System.Configuration;
Akram Shahda
fonte
Erro de digitação, ele deve estar usando System.Configuration;
precisa saber é o seguinte
14

In VB: Isso deve funcionar

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

No C#seria (como por comentário de Ala)

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
fonte
Esses parênteses precisam ser colchetes.
Charles Burns
1
@ CharlesBurns, obrigado, eu escrevi em VB, por engano, em C # certeza de que ele deve ser ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
Ahh, eu nem percebi que era VB. Eu pensei que era um erro de digitação. De certa forma, meu erro também.
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))

ABAIXO CÓDIGO DE ARQUIVO WEB.CONFIG

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

No código acima, ABCD é o nome da conexão

subramanya46
fonte
Além: Além do indexador que aceita o nome da string de conexão, também é permitido o uso de índices inteiros - o que é útil se você quiser ler todas as strings de conexão em um forloop ( for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }) e torná-las selecionáveis ​​em uma caixa de combinação. Com var numOfConnections = ConfigurationManager.ConnectionStrings.Count;você pode determinar quantas seqüências de conexão existem. Neste exemplo conn.Namecontém o nome da conexão.
Matt
11

Você precisa invocar esta classe na parte superior da sua página ou classe:

using System.Configuration;

Em seguida, você pode usar este método que retorna a cadeia de conexão para estar pronta para passar ao objeto sqlconnection para continuar seu trabalho da seguinte maneira:

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

Apenas para esclarecer claramente, este é o valor na Web Config:

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>
Ahmed Elbatt
fonte
No projeto da Web, é melhor usar o WebConfigurationManager no System.Web.Configuration.
BJladu4
9
using System.Configuration;


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


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

Lembre-se de não usar ConnectionStrings [index] porque você pode configurar e portabilidade a máquina global

cyberspiritwebsolutions ugo
fonte
2

Primeiro adicione isto:

using System.Configuration;
Todos
fonte
1

Todo mundo parece estar sugerindo que adicionar

using System.Configuration;

que é verdade.

Mas posso sugerir que você pense em instalar a extensão Visual Studio do ReSharper?

Com ela instalada, em vez de ver um erro em que uma classe não está definida, você verá um prompt informando em que montagem está, perguntando se você deseja adicionar a instrução de uso necessária.

Jeff Dege
fonte