Leggi la stringa di connessione da web.config


253

Come posso leggere una stringa di connessione da un web.configfile in una classe pubblica contenuta in una libreria di classi?

Ho provato:

WebConfigurationManager

ConfigurationManager

Ma queste classi non sono riconosciute nella mia libreria di classi.

Risposte:


177

Aggiungi System.Configurationcome riferimento.

Per qualche bizzarro motivo non è incluso di default.



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
"Aggiungi un riferimento nella parte superiore del tuo file di codice" => è una direttiva che utilizza, non un riferimento!
Mishax,

25

Aggiungi System.Configurationcome riferimento quindi:

 using System.Configuration;

 ...

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

19

Immagino che sia necessario aggiungere un riferimento all'assembly System.Configuration se non è già stato aggiunto.

Inoltre, potrebbe essere necessario inserire la seguente riga nella parte superiore del file di codice:

using System.Configuration;

Errore di battitura, dovrebbe utilizzare System.Configuration;
Nick Binnet,

14

In VB: Questo dovrebbe funzionare

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

In C#esso sarebbe (come da commento di Ala)

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString

Le parentesi devono essere tra parentesi.
Charles Burns,

1
@ CharlesBurns, grazie, ho scritto in VB per errore, in C # sicuramente dovrebbe essere ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa,

Ahh, non avevo nemmeno capito che fosse VB. Ho pensato che fosse un refuso. In un certo senso, anche il mio errore.
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))

SOTTO CODICE FILE WEB.CONFIG

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

Nel codice sopra ABCD è il nome della connessione


Aggiunta: Oltre all'indicizzatore che accetta il nome della stringa di connessione, è anche consentito utilizzare indici interi, il che è utile se si desidera leggere tutte le stringhe di connessione in unfor ciclo ( for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }) e renderle selezionabili in una casella combinata. Con var numOfConnections = ConfigurationManager.ConnectionStrings.Count;te puoi determinare quante stringhe di connessione esistono. In questo esempio conn.Namecontiene il nome della connessione.
Matt,

11

Devi invocare questa classe nella parte superiore della tua pagina o classe:

using System.Configuration;

Quindi è possibile utilizzare questo metodo che restituisce la stringa di connessione pronta per essere passata all'oggetto sqlconnection per continuare il lavoro come segue:

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

Giusto per fare un chiaro chiarimento, questo è il valore nella configurazione Web:

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>

Nel progetto Web è meglio usare WebConfigurationManager in System.Web.Configuration.
BJladu4,

9
using System.Configuration;


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

4
using System.Configuration;


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

Ricorda di non utilizzare ConnectionStrings [indice] perché potresti configurare Global Machine Config e Portability


2

Per prima cosa aggiungi questo:

using System.Configuration;

1

Tutti sembrano suggerire che l'aggiunta

using System.Configuration;

che è vero.

Ma potrei suggerirti di pensare all'installazione dell'estensione Visual Studio di ReSharper?

Con esso installato, invece di vedere un errore che non è definita una classe, vedrai un prompt che ti dice in quale assembly è, chiedendoti se vuoi che aggiunga l'istruzione using necessaria.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.