2010-11-24 4 views
5

내 app.config에서 연결 문자열을 읽으려고하고 있지만 연결 문자열 하나만 보여 주며 내 app.config에도 표시되지 않습니다. 여기 app.config의 connectionStrings 요소를 읽습니다.

내 코드입니다 :

System.Diagnostics.Debugger.Break(); 

Configuration config = 
ConfigurationManager.OpenExeConfiguration(
        AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 

foreach (var connectionString in config.ConnectionStrings.ConnectionStrings) 
    System.Diagnostics.Debug.Print(connectionString.ToString()); 

그리고 출력합니다이 :

data source=.\SQLEXPRESS;Integrated Security=SSPI; 
    AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true 

나는 내가에서 지정한 내 데이터베이스 중 하나에 사용자 정의를 ConnectionString을 인쇄하기를 기대하고있다 app.config 파일.

업데이트

안녕 얘들 아, 내 문제에 시간을 할애하고 도와 노력에 대한 여러분 모두 감사합니다. 여러분 모두가 ConfigurationManager.ConnectionStrings을 사용하거나 다른 하위 섹션에이 방법으로 액세스 할 수 있다는 점에서 옳았지 만, 그렇게 할 때 구성은 읽기 전용입니다. 새로운 연결 문자열을 추가하거나 기존 연결 문자열을 제거하는 것과 같이 변경할 수는 없습니다. 그리고 그렇게해야합니다. 런타임에 설정 파일을 수정할 방법이 있다면 알려주십시오.

답변

0

연결 문자열 이외의 모든 구성 설정을 읽을 수 있습니까?

봅니다 :

System.Configuration.ConfigurationManager.AppSettings("MyAppVariable"); 

또한 그 구문은 조금 복잡한 보인다. 이 간단한 버전을 사용해보십시오.

System.Configuration.ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString 
2

machine.config에서 읽습니다. <connectionStrings> 이후의 app.config에 당신이 당신의 구성 파일을 열 수 OpenExeConfiguration를 사용하는 이유가있는 <clear/>.

+0

나는 그것을 시도했다. 운이 없다. –

2

입니까? 프로젝트의 일부로 만든 app.config 인 경우 ConfigurationManager.ConnectionStrings 만 사용하면됩니다.

2

ConfigurationManager.ConnectionStrings["ConnectionStringName"]은 appSetting으로 저장하지 않는 한 처리해야합니다. 나는 (더 크게 웹 응용 프로그램 솔루션에 포함) 내가 쓴 작은 콘솔 응용 프로그램과 동일한 문제를 가지고이 경우

, 그것은 ConfigurationManager.AppSettings["SettingName"]

0

에있을 것입니다 - 내의 app.config가 더 이상 없음을 보였다 전혀 픽업되지 않고, 내가 돌아오고 있었던 유일한 연결 문자열은 LocalSqlServer뿐입니다.

재부팅을했습니다.

1

ConnectionString (또는 app.config의 모든 섹션)을 편집하려면 Configuration 객체의 GetSection() 메서드에서 반환 한 객체를 사용해야합니다. 내 경험에

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
ConnectionStringsSection csSettings = config.GetSection("connectionStrings") as ConnectionStringsSection; 
if(csSettings != null) 
{ 
    // examples of removing all settings, adding a new one and removing it 
    csSettings.ConnectionStrings.Clear(); 
    csSettings.ConnectionStrings.Add(new ConnectionStringSettings("myCS", "<connectionString>")); 
    csSettings.ConnectionStrings.Remove("myCS"); 
    // save the changes 
    config.Save(ConfigurationSaveMode.Modified); 
} 

은 항상 당신의 app.config를 엽니 다 의미 OpenExeConfiguration (문자열)에 버그가있다. 파일 이름에서 구성 파일을 열려면 OpenMappedExeConfiguration()을 사용해야합니다.

관련 문제