web.config에서 연결 문자열 읽기


253

web.config파일에서 클래스 라이브러리에 포함 된 공개 클래스로 연결 문자열을 읽으려면 어떻게 해야합니까?

난 노력 했어:

WebConfigurationManager

ConfigurationManager

그러나 이러한 클래스는 내 클래스 라이브러리에서 인식되지 않습니다.

답변:


177

System.Configuration참조로 추가하십시오 .

기괴한 이유로 기본적으로 포함되지 않습니다.



66

씨#

// 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
"코드 파일 맨 위에 참조 추가"=> 참조가 아니라 using 지시문입니다!
Mishax

25

System.Configuration그런 다음 참조로 추가하십시오 .

 using System.Configuration;

 ...

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

19

System.Configuration 어셈블리 에 대한 참조를 아직 추가하지 않은 경우 참조를 추가해야한다고 생각합니다 .

또한 코드 파일 맨 위에 다음 줄을 삽입해야 할 수도 있습니다.

using System.Configuration;

오타, System.Configuration을 사용해야합니다.
Nick Binnet

14

VB :이 작동합니다

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

에서 C#가 (알라의 의견에 따라) 것

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString

괄호는 괄호 여야합니다.
Charles Burns

1
@ CharlesBurns, 감사합니다, 나는 C #으로, 실수로 VB에서 쓴 확인이 있어야한다 ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
알라

아, 그게 VB 인지도 몰랐어요. 나는 그것이 오타라고 생각했다. 어떤 식 으로든, 내 실수도.
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;  

씨#

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에는 연결 이름 이 포함되어 있습니다.
Matt

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>

웹 프로젝트에서는 System.Web.Configuration의 WebConfigurationManager를 사용하는 것이 좋습니다.
BJladu4

9
using System.Configuration;


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

4
using System.Configuration;


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

글로벌 머신 구성 및 이식성이있을 수 있으므로 ConnectionStrings [index]를 사용하지 마십시오.


2

먼저 이것을 추가하십시오 :

using System.Configuration;

1

모두가

using System.Configuration;

뭐가 진실이지.

그러나 ReSharper의 Visual Studio 확장 설치에 ​​대해 생각해 보시겠습니까?

이 클래스를 설치하면 클래스가 정의되지 않았다는 오류가 표시되는 대신 클래스에 어떤 어셈블리가 있는지 알려주는 프롬프트가 표시되어 필요한 using 문을 추가 할 것인지 묻습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.