Прочитайте рядок з'єднання з web.config


253

Як я можу прочитати рядок з'єднання з web.configфайлу в публічний клас, що міститься в бібліотеці класів?

Я спробував:

WebConfigurationManager

ConfigurationManager

Але ці класи не розпізнаються в моїй бібліотеці класів.

Відповіді:


177

Додати System.Configurationяк орієнтир.

З якоїсь химерної причини він за замовчуванням не включений.



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;

В.Б.

' 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
"Додайте посилання вгорі кодового файлу" => це інструкція з використання, а не посилання!
Mishax

25

Додайте System.Configurationяк орієнтир тоді:

 using System.Configuration;

 ...

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

19

Я думаю, вам потрібно додати посилання на збірку System.Configuration, якщо це ще не було додано.

Також вам може знадобитися вставити наступний рядок у верхній частині кодового файлу:

using System.Configuration;

Typo, воно повинно використовувати 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))

Нижче WEB.CONFIG ФАЙЛ КОД

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

У наведеному вище коді ABCD є ім'я з'єднання


Додавання: Окрім індексатора, який приймає назву рядка з'єднання, також дозволяється використовувати цілі індекси - що корисно, якщо ви хочете прочитати всі рядки з'єднання в 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


4
using System.Configuration;


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

Пам'ятайте, не використовуйте ConnectionStrings [індекс], тому що ви, можливо, глобальні налаштування машини та портативність



1

Здається, всі пропонують це додати

using System.Configuration;

що правда.

Але я можу запропонувати вам подумати про встановлення розширення Visual Studio ReSharper?

Якщо встановлено, замість того, щоб побачити помилку, що клас не визначений, ви побачите підказку, яка повідомляє вам, в якій збірці він знаходиться, і запитає, чи хочете ви, щоб він додав потрібний оператор.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.