268

How can I read a connection string from a web.config file into a public class contained within a class library?

I've tried:

WebConfigurationManager

ConfigurationManager

But these classes are not recognized within my class library.

DavidRR
  • 16,676
  • 19
  • 101
  • 178
chamara
  • 12,343
  • 30
  • 124
  • 203

12 Answers12

535

You need to add a reference to System.Configuration and then use:

System.Configuration.ConfigurationManager.
    ConnectionStrings["connectionStringName"].ConnectionString;
Bart
  • 4,845
  • 1
  • 33
  • 41
Muhammad Akhtar
  • 51,472
  • 37
  • 135
  • 186
  • 19
    [MSDN, System.configuration](http://msdn.microsoft.com/zh-tw/library/system.configuration.configurationmanager.aspx). It needs `System.Configuration.dll`. – AechoLiu Jul 05 '14 at 07:42
184

Add System.Configuration as a reference.

For some bizarre reason it's not included by default.

Liam
  • 25,247
  • 27
  • 110
  • 174
peteisace
  • 2,672
  • 1
  • 18
  • 17
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
Zack
  • 2,719
  • 32
  • 59
MDM
  • 897
  • 6
  • 11
  • 3
    "Add a reference at the top of your code file" => that's a using directive, not a reference! – Mishax Aug 01 '14 at 14:54
27

Add System.Configuration as a reference then:

 using System.Configuration;

 ...

 string conn = 
    ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;
Kev
  • 115,559
  • 50
  • 294
  • 378
nirmus
  • 4,733
  • 8
  • 29
  • 50
19

I guess you need to add a reference to the System.Configuration assembly if that have not already been added.

Also, you may need to insert the following line at the top of your code file:

using System.Configuration;
Md Ashaduzzaman
  • 3,934
  • 2
  • 17
  • 33
Akram Shahda
  • 14,295
  • 4
  • 43
  • 64
17
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))

BELOW WEB.CONFIG FILE CODE

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

In the above Code ABCD is the Connection Name

Dariusz Woźniak
  • 8,677
  • 5
  • 52
  • 70
subramanya46
  • 433
  • 6
  • 9
  • **Addition:** Besides the indexer that accepts the name of the connection string, it is also allowed to use integer indices - which is useful if you want to read all connection strings in a `for` loop (`for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }`) and make them selectable in a combobox. With `var numOfConnections = ConfigurationManager.ConnectionStrings.Count;` you can determine how many connection strings exist. In this example `conn.Name` contains the name of the connection. – Matt Dec 05 '19 at 15:39
15

In VB : This should work

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

In C# it would be (as per comment of Ala)

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Marcel
  • 14,086
  • 19
  • 84
  • 137
Alaa
  • 8,404
  • 16
  • 56
  • 84
11

You have to invoke this class on the top of your page or class :

using System.Configuration;

Then you can use this Method that returns the connection string to be ready to passed to the sqlconnection object to continue your work as follows:

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

Just to make a clear clarification this is the value in the web Config:

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>
Liam
  • 25,247
  • 27
  • 110
  • 174
Ahmed Elbatt
  • 1,001
  • 1
  • 14
  • 20
9
using System.Configuration;


string conn = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();
NoWar
  • 34,755
  • 78
  • 302
  • 475
Saravanan G
  • 91
  • 1
  • 1
4
using System.Configuration;


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

Remember don't Use ConnectionStrings[index] because you might of Global machine Config and Portability

Rafael Herscovici
  • 15,734
  • 17
  • 62
  • 92
2

First add this:

using System.Configuration;
Conner
  • 28,826
  • 8
  • 50
  • 73
Ali
  • 31
  • 1
1

Everybody seems to be suggesting that adding

using System.Configuration;

which is true.

But might I suggest that you think about installing ReSharper's Visual Studio extension?

With it installed, instead of seeing an error that a class isn't defined, you'll see a prompt that tells you which assembly it is in, asking you if you want it to add the needed using statement.

Jeff Dege
  • 10,450
  • 21
  • 81
  • 152