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.

Respostas:


177

Adicione System.Configurationcomo referência.

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



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

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;

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

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


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>

No projeto da Web, é melhor usar o WebConfigurationManager no System.Web.Configuration.
BJladu4

9
using System.Configuration;


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

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


2

Primeiro adicione isto:

using System.Configuration;

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.