[C#] ConfigurationManager를 사용하여 Web.Config에서 키 읽기

Web.config웹 계층과 다른 계층 의 파일에서 키를 읽으려고합니다 (동일한 솔루션)

여기 내가 시도하는 것이 있습니다 :

string userName = System.Configuration.ConfigurationManager.AppSettings["PFUserName"];
string password = System.Configuration.ConfigurationManager.AppSettings["PFPassWord"];

그리고 여기 파일에 내 appSettings것이 Web.config있습니다 :

<configuration>
   ....
   <appSettings>
      <add key="PFUserName" value="myusername"/>
      <add key="PFPassWord" value="mypassword"/>
   </appSettings>
   ....
</configuration>

내가 코드를 디버깅 할 때 usernamepassword단지이다 null, 그래서 키의 값을받지 못하고있다.

이 값을 읽는 데 내가 뭘 잘못하고 있니?



답변

대신 WebConfigurationManager 클래스를 사용해보십시오. 예를 들면 다음과 같습니다.

string userName = WebConfigurationManager.AppSettings["PFUserName"]


답변

  var url = ConfigurationManager.AppSettings["ServiceProviderUrl"];


답변

호출자가 다른 프로젝트 인 경우 호출 된 프로젝트가 아닌 호출자 프로젝트에 구성을 작성해야합니다.


답변

이 솔루션이 매우 유용하다는 것을 알았습니다 . C # 4.0 DynamicObject를 사용하여 ConfigurationManager를 래핑합니다. 따라서 다음과 같은 값에 액세스하는 대신

 WebConfigurationManager.AppSettings["PFUserName"]

당신은 속성으로 그들을 액세스 :

dynamic appSettings = new AppSettingsWrapper();
Console.WriteLine(appSettings.PFUserName);  

편집 : 링크가 오래 된 경우 코드 스 니펫 추가 :

public class AppSettingsWrapper : DynamicObject
{
     private NameValueCollection _items;

    public AppSettingsWrapper()
    {
        _items = ConfigurationManager.AppSettings;
    }

     public override bool TryGetMember(GetMemberBinder binder, out object result)
    {
        result = _items[binder.Name];
        return result != null;
    }
}


답변

전체 경로는

System.Configuration.ConfigurationManager.AppSettings["KeyName"]


답변

두 개의 Web.config 파일이 있습니다. 나는 당신이 그 두 파일과 혼동했을 수 있다고 생각합니다.

이 이미지를 확인하십시오 :

이 링크를 클릭하고 이미지를 확인하십시오

이 이미지에는 두 개의 Web.config 파일이 있습니다. 뷰 폴더가 아닌 프로젝트 폴더에있는 상수에 상수를 추가해야합니다.

이것이 당신을 도울 수 있기를 바랍니다


답변

다른 프로젝트에서이 프로젝트를 사용중인 경우이 문제가 발생합니다. 앱 설정 키를 상위 프로젝트의 app.config 또는 web.config에 복사하십시오.