Przeczytaj parametry połączenia z pliku web.config

253

Jak mogę odczytać parametry połączenia z web.configpliku do klasy publicznej zawartej w bibliotece klas?

Próbowałem:

WebConfigurationManager

ConfigurationManager

Ale te klasy nie są rozpoznawane w mojej bibliotece klas.

chamara
źródło

Odpowiedzi:

177

Dodaj System.Configurationjako odniesienie.

Z jakiegoś dziwnego powodu nie jest domyślnie dołączany.

peteisace
źródło
510

Musisz dodać odwołanie do, System.Configurationa następnie użyć:

System.Configuration.ConfigurationManager.
    ConnectionStrings["connectionStringName"].ConnectionString;
Muhammad Akhtar
źródło
19
MSDN, Konfiguracja systemu . Potrzebuje System.Configuration.dll.
AechoLiu
66

DO#

// 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
źródło
3
„Dodaj odniesienie u góry pliku kodu” => to dyrektywa używająca, a nie odwołanie!
Mishax
25

Dodaj System.Configurationjako odniesienie, a następnie:

 using System.Configuration;

 ...

 string conn = 
    ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;
nirmus
źródło
19

Myślę, że musisz dodać odwołanie do zestawu System.Configuration , jeśli nie zostały jeszcze dodane.

Ponadto może być konieczne wstawienie następującego wiersza u góry pliku kodu:

using System.Configuration;
Akram Shahda
źródło
Literówka, powinno używać System.Configuration;
Nick Binnet,
14

W VB: To powinno działać

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

W C#byłoby (zgodnie z komentarzem Ala)

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
źródło
Nawiasy te muszą być nawiasami kwadratowymi.
Charles Burns,
1
@ CharlesBurns, Dzięki, przez pomyłkę napisałem w VB, w C # na pewno powinno być ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
Ahh, nawet nie zdawałem sobie sprawy, że to VB. Myślałem, że to literówka. W pewnym sensie mój błąd też.
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;  

DO#

string constring = ConfigurationManager.ConnectionStrings["ABCD"].ConnectionString;
                using (SqlConnection con = new SqlConnection(constring))

PONIŻSZY KOD PLIKU KONFIGURACYJNEGO

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

W powyższym kodzie ABCD jest nazwą połączenia

subramanya46
źródło
Dodatek: Oprócz indeksatora, który akceptuje nazwę ciągu połączenia, można również używać indeksów liczb całkowitych - co jest przydatne, jeśli chcesz odczytać wszystkie ciągi połączeń w forpętli ( for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }) i umożliwić ich wybieranie w comboboxie. Za pomocą var numOfConnections = ConfigurationManager.ConnectionStrings.Count;możesz określić, ile łańcuchów połączeń istnieje. W tym przykładzie conn.Namezawiera nazwę połączenia.
Matt
11

Musisz wywołać tę klasę u góry strony lub klasy:

using System.Configuration;

Następnie możesz użyć tej metody, która zwraca parametry połączenia, aby były gotowe do przekazania do obiektu sqlconnection, aby kontynuować pracę w następujący sposób:

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

Aby wyjaśnić, oto wartość w internetowym Config:

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>
Ahmed Elbatt
źródło
W projekcie sieciowym lepiej jest użyć WebConfigurationManager w System.Web.Configuration.
BJladu4,
9
using System.Configuration;


string conn = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();
Saravanan G.
źródło
4
using System.Configuration;


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

Pamiętaj, nie używaj ConnectionStrings [indeks], ponieważ możesz mieć globalną konfigurację komputera i przenośność

cyberspiritwebsolutions ugo
źródło
2

Najpierw dodaj to:

using System.Configuration;
Ali
źródło
1

Wydaje się, że wszyscy sugerują to dodanie

using System.Configuration;

co jest prawdą.

Ale czy mogę zasugerować, aby pomyśleć o zainstalowaniu rozszerzenia Visual Studio ReSharpera?

Po zainstalowaniu, zamiast zobaczyć błąd, że klasa nie jest zdefiniowana, zobaczysz monit informujący, w którym zestawie jest, i pytający, czy chcesz dodać potrzebną instrukcję using.

Jeff Dege
źródło