2012-08-16 4 views
0

내 app.config의 사용자 지정 구성 섹션 중 하나에서 값을 업데이트해야합니다. 이 작업을 수행하는 좋은 예가 있습니까?C# - 사용자 지정 구성 저장

<mySection> 
    <level1> 
     <add data1="444"/> 
    </level1> 
</mySection> 

프로그래밍 방식으로 444에서 555로 업데이트하고 싶습니다.

답변

6

구성이 application.exe.config에 저장된다고 가정하면 다음이 작동합니다.

void ModifyLevel1Value(int newValue) 
{ 
    Configuration exeConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
    MySection section = (MySection)exeConfiguration.GetSection("mySection"); 

    // Modify value, or whatever is sensible in your program 
    section.LevelsCollection["data1"] = newValue; 

    exeConfiguration.Save(); 
} 

웹 응용 프로그램 및 해당 구성에 대한 경험이 거의 없기 때문에 web.config에서 작동하는지 잘 모르겠습니다.

이 기술은 구성 파일을 다시 쓰지만 내부 구성 파일 캐시를 플러시하지는 않습니다. 구성 파일을 강제로 다시로드하려면 (응용 프로그램에서 문제가되지 않을 수도 있음) 다음과 같은 정적 메서드를 호출 할 수 있습니다.

ConfigurationManager.RefreshSection(section); 
+0

이로 인해 appdomain이 다시로드 되나요? 앱 실행 중에 문제가 발생합니까? 이것은 콘솔 앱이므로 웹 앱에 비해 큰 문제는 아니라고 생각합니다. – Arcadian

+0

이로 인해 앱 도메인이 다시로드되지 않습니다. 구성 파일 만. 앱의 작성 방법을 모르기 때문에 앱에서 발생할 수있는 문제에 대해 말씀 드릴 수 없습니다. –

1

변경하려는 요소를 찾기 위해 linq to xml를 사용할 수 있습니다, 당신은 XElement 객체를 얻어야한다 당신이 원하는대로 변경하고 저장합니다.

관련 문제