2012-01-16 3 views
0

클래스에서 일부 키/값을 가져 오려고합니다. 이것은 C# 클래스 라이브러리 프로젝트 (웹 프로젝트 아님)이므로 App.Config가 있습니다.C# 프로젝트 및 구성 파일

public class ConfigUtil 
{ 
    /// <summary> 
    /// Utility method to retrieve configuration setting values. 
    /// </summary> 
    /// <param name="configKey">Configuration Settings key to retrieve.</param> 
    /// <returns>empty string if key is null</returns> 
    public static string GetAppConfigSetting(string configKey) 
    { 
     return ConfigurationManager.AppSettings[configKey] ?? string.Empty; 
    } 
} 

이 유틸리티 방법이었다 : config 파일에서 키/값을 끌어

1) 유틸리티 방법 : 내 C# 프로젝트 (클래스 라이브러리)에서

다음을 얻었다 웹 프로젝트에서 사용되었고 C# 프로젝트의 일부 코드에서 제 3 자 API에 대한 인증을 위해 이러한 인증 및 끝점이 필요하기 때문에이 훌륭한 도우미를 복사하여 내 C# 프로젝트에 붙여 넣었습니다.

4

<appSettings> 
    <add key="SomeThirdPartyApiEndPoint" value="http://someEndPointUrl.com/XMLAPI" /> 
    <add key="SomeThirdPartyApiAuthUsername" value="someUserNameHere" /> 
    <add key="SomeThirdPartyApiAuthPassword" value="5233s54" /> 
    </appSettings> 
) 일부 예 :

2) Config.cs 내 조회

class Config 
{ 
    public static string SomeThirdPartyApiEndpoint 
    { 
     get { return ConfigUtil.GetAppConfigSetting("SomeThirdPartyApiEndpoint"); } 
    } 

    public static string SomeThirdPartyApiAuthUsername 
    { 
     get { return ConfigUtil.GetAppConfigSetting("SomeThirdPartyApiAuthUsername"); } 
    } 

    public static string SomeThirdPartyApiAuthPassword 
    { 
     get { return ConfigUtil.GetAppConfigSetting("SomeThirdPartyApiAuthPassword"); } 
    } 
} 

3) 내의 app.config에서, 키/값 잡아 이 프로젝트에서 키 값 중 하나를 가져 오는 중 내 클래스의 코드 :

string password = Config.SomeThirdPartyApiAuthUsername; 

이 줄은 내 클래스 방법 중 하나입니다.

문제 : 내 키/값을 찾을 수 없습니다. 디버깅 할 때 암호에 빈 문자열이 표시됩니다.

웹 프로젝트가 아니기 때문에 Web.config가 없으므로이 키/값을 App.Config에 넣어야한다고 가정합니다. 이것은 제 3 자 API에 대한 호출을 래핑하기 위해 작성한 래퍼 프로젝트입니다.

다른 질문 관련 : 그런 다음 ConfigurationManager.AppSettings는 Web.config가없는 경우 App.Config를 찾습니다. 이 ConfigurationManager가 어떻게 가져 오는지 궁금합니다 ... web.configs 또는 모든 .config를 즉각적인 프로젝트에서 사용할 수 있습니까?

+0

을 참조하십시오. 관련 질문은 혼란 스럽습니다 ...이 프로젝트는 웹 프로젝트입니까? ... ASP.NET 프로젝트는 web.config ... – Skyrim

+0

에서 설정을 가져옵니다. C# 프로젝트 ...일반 클래스 라이브러리 프로젝트 – PositiveGuy

+0

괜찮 으면, 배포 된 환경에 따라 __guessing__을 사용할 수있는 구성 파일을 사용하게됩니다. 샘플 프로젝트를 만드는 데 오랜 시간이 걸리지 않으므로 테스트해야합니다. 또한, 제 솔루션을 확인해주십시오 :) – Skyrim

답변

1

입니다. 라이브러리 프로젝트 인 경우 원하는 설정을 호스트의 구성 파일에 추가해야합니다.

+0

그래서 호스트는 내 프로젝트 자체가 될 것입니다. 예를 들어이 프로젝트는 제 3 자 API에 대한 서비스 참조를 api 호출하는 클래스로 만든 래퍼 프로젝트입니다. 그래서 필자는 래퍼 메소드 api에서이 프로젝트의 App.Config에서 참조 할 수 있도록 호출해야하는 몇 가지 문자열을 배치했습니다 ... – PositiveGuy

+0

호스트는 실행중인 프로그램입니다. 웹 사이트, 웹 서비스, Windows 프로그램 또는 명령 줄 프로그램이 될 수 있습니다. –

+0

당신이 옳았다는 것을 알았습니다. 사실, 위의 프로젝트를 사용하고있는 테스트 프로젝트에서 app.config를보고 있습니다. 감사. – PositiveGuy

0

SomeThirdPartyApiUsername는 SomeThirdPartyApiAuthUsername


public static string SomeThirdPartyApiAuthUsername 
{ 
    get { return ConfigUtil.GetAppConfigSetting("SomeThirdPartyApiAuthUsername"); } 
} 

해야하지만 키 내가 ConfigurationManager.AppSettings가 실행중인 프로그램의 구성 파일에서 찾습니다 있다고 생각

"SomeThirdPartyApiUsername" 
+0

또는 다른 방법으로 원하시는 이름에 따라 달라집니다. – Skyrim

+0

죄송 합니다만 게시 오류가 발생했습니다 ... 업데이트하겠습니다. 문제는 여전히 남아 있습니다. – PositiveGuy

+0

@CoffeeAddict - gotcha ... – Skyrim

관련 문제