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.

Odpowiedzi:


177

Dodaj System.Configurationjako odniesienie.

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



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

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;

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;

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

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


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>

W projekcie sieciowym lepiej jest użyć WebConfigurationManager w System.Web.Configuration.
BJladu4,

9
using System.Configuration;


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

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ść



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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.