Прочитать строку подключения из web.config

253

Как я могу прочитать строку подключения из web.configфайла в открытый класс, содержащийся в библиотеке классов?

Я пробовал:

WebConfigurationManager

ConfigurationManager

Но эти классы не распознаются в моей библиотеке классов.

Chamara
источник

Ответы:

177

Добавить System.Configurationв качестве ссылки.

По какой-то странной причине он не включен по умолчанию.

peteisace
источник
510

Вам нужно добавить ссылку на System.Configurationи затем использовать:

System.Configuration.ConfigurationManager.
    ConnectionStrings["connectionStringName"].ConnectionString;
Мухаммед Ахтар
источник
19
MSDN, System.configuration . Это нужно 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
источник
3
«Добавьте ссылку вверху вашего файла кода» => это директива using, а не ссылка!
Mishax
25

Добавьте System.Configurationв качестве ссылки тогда:

 using System.Configuration;

 ...

 string conn = 
    ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;
nirmus
источник
19

Я думаю, вам нужно добавить ссылку на System.Configuration сборку если она еще не была добавлена.

Кроме того, вам может понадобиться вставить следующую строку вверху вашего файла кода:

using System.Configuration;
Акрам Шахда
источник
Опечатка, это должно быть использование System.Configuration;
Ник Биннет
14

В VB: Это должно работать

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

В C#нем будет (согласно комментарию Ала)

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Аля
источник
Эти скобки должны быть в скобках.
Чарльз Бернс
1
@ CharlesBurns, спасибо, я написал в VB по ошибке, в C # уверен, что так и должно быть ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
Ааа, я даже не поняла, что это был VB. Я думал, что это была опечатка. В некотором смысле, моя ошибка тоже.
Чарльз Бернс
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))

НИЖЕ ВЕБ-КОНФИГ. ФАЙЛ КОД

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

В приведенном выше коде ABCD это имя подключения

subramanya46
источник
Дополнение: Помимо индексатора, который принимает имя строки подключения, также разрешается использовать целочисленные индексы, что полезно, если вы хотите прочитать все строки подключения в forцикле ( for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }) и сделать их выбираемыми в выпадающем списке. С var numOfConnections = ConfigurationManager.ConnectionStrings.Count;его помощью вы можете определить, сколько строк подключения существует. В этом примере conn.Nameсодержится имя соединения.
Мэтт
11

Вы должны вызвать этот класс в верхней части вашей страницы или класса:

using System.Configuration;

Затем вы можете использовать этот метод, который возвращает строку подключения, готовую для передачи в объект sqlconnection, чтобы продолжить вашу работу следующим образом:

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

Просто чтобы прояснить это значение в веб-конфигурации:

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>
Ахмед Эльбатт
источник
В веб-проекте лучше использовать WebConfigurationManager в System.Web.Configuration.
BJladu4
9
using System.Configuration;


string conn = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();
Сараванан Г
источник
4
using System.Configuration;


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

Помните, что не используйте ConnectionStrings [index], потому что вы можете использовать Глобальную конфигурацию и переносимость машины

cyberspiritwebsolutions ugo
источник
2

Сначала добавьте это:

using System.Configuration;
Али
источник
1

Кажется, все предполагают, что добавление

using System.Configuration;

что является правдой.

Но могу ли я предложить вам подумать об установке расширения ReSharper для Visual Studio?

Когда он установлен, вместо того, чтобы увидеть ошибку, что класс не определен, вы увидите подсказку, которая сообщит вам, в какой сборке он находится, и спросит вас, хотите ли вы добавить необходимый оператор using.

Джефф Деге
источник