구성 파일의 값에 액세스 할 수 없습니다.
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var clientsFilePath = config.AppSettings.Settings["ClientsFilePath"].Value;
// the second line gets a NullReferenceException
.config 파일 :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- ... -->
<add key="ClientsFilePath" value="filepath"/>
<!-- ... -->
</appSettings>
</configuration>
어떻게해야하는지 제안이 있습니까?
답변
이것은 나를 위해 작동합니다 :
string value = System.Configuration.ConfigurationManager.AppSettings[key];
답변
dtsg가 해낸 대답은 다음과 같습니다.
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
그러나 어셈블리 참조 를 추가해야 합니다.
시스템 설정
당신의 이동 솔루션 탐색기 와 마우스 오른쪽 버튼으로 클릭 참고 문헌에 선택 추가 참조 . 어셈블리 탭을 선택하고 구성을 검색하십시오 .
다음은 내 App.config 의 예입니다 .
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="AdminName" value="My Name"/>
<add key="AdminEMail" value="MyEMailAddress"/>
</appSettings>
</configuration>
다음과 같은 방법으로 얻을 수 있습니다.
string adminName = ConfigurationManager.AppSettings["AdminName"];
답변
이것을 줘 :
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
답변
구성에서 읽기 :
구성에 대한 참조를 추가해야합니다
- 프로젝트에서 “속성”을여십시오
- “설정”탭으로 이동
- “이름”과 “값”추가
- 다음 코드를 사용하여 가치를 얻으십시오.
string value = Properties.Settings.Default.keyname;
구성에 저장 :
Properties.Settings.Default.keyName = value;
Properties.Settings.Default.Save();
답변
나는 사용하고있다 :
ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
//configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension";
configMap.ExeConfigFilename = AppDomain.CurrentDomain.BaseDirectory + ServiceConstants.FILE_SETTING;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
value1 = System.Configuration.ConfigurationManager.AppSettings["NewKey0"];
value2 = config.AppSettings.Settings["NewKey0"].Value;
value3 = ConfigurationManager.AppSettings["NewKey0"];
여기서 value1 = … 및 value3 = … 은 null을 제공하고 value2 = … 는 작동합니다.
그런 다음 내부 app.config를 다음과 같이 대체하기로 결정했습니다.
// Note works in service but not in wpf
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"d:\test\justAConfigFile.config.whateverYouLikeExtension");
ConfigurationManager.RefreshSection("appSettings");
string value = ConfigurationManager.AppSettings["NewKey0"];
VS2012 .net 4 사용
답변
에서 app/web.config
파일을 다음과 같은 구성을 설정합니다 :
<configuration>
<appSettings>
<add key="NameForTheKey" value="ValueForThisKey" />
...
...
</appSettings>
...
...
</configuration>
다음 줄을 입력하여 코드에서 이것에 액세스 할 수 있습니다.
string myVar = System.Configuration.ConfigurationManager.AppSettings["NameForTheKey"];
* 참고이 잘 동작 .net4.5.x
하고 .net4.6.x
, 그러나 작동하지 않습니다 .net core
. 안부 : 라파엘
답변
오랜만에 이걸로 돌아온다면 …
ConfigurationManager가 종료되면 여전히이 시도에 대한 해답을 찾는 사람은 다음과 같습니다.
AppSettingsReader appsettingsreader = new AppSettingsReader();
string timeAsString = (string)(new AppSettingsReader().GetValue("Service.Instance.Trigger.Time", typeof(string)));
물론 System.Configuration이 필요합니다.
(실제로 작동하고 읽기 쉬운 코드를 편집했습니다)