[c#] C # (. NET)을 사용하여 프로그래밍 방식으로 web.config 변경

web.configC #을 사용하여 프로그래밍 방식으로 어떻게 수정 / 조작 할 수 있습니까? 구성 개체를 사용할 수 있습니까 web.config? 그렇다면 구성 개체에를 어떻게 로드 할 수 있습니까? 연결 문자열을 변경하는 전체 예제를 갖고 싶습니다. 수정 후에는 web.config하드 디스크에 다시 기록해야합니다.



답변

다음은 몇 가지 코드입니다.

var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=...";
configuration.Save();

이 문서 에서 더 많은 예제를 참조하십시오 . 가장을 살펴 봐야 할 수도 있습니다 .


답변

Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
//section.SectionInformation.UnprotectSection();
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();


답변

web.config 파일은 xml 파일이므로 xmldocument 클래스를 사용하여 web.config를 열 수 있습니다. 업데이트 할 xml 파일에서 노드를 가져온 다음 xml 파일을 저장합니다.

다음은 web.config 파일을 프로그래밍 방식으로 업데이트하는 방법을 자세히 설명하는 URL입니다.

http://patelshailesh.com/index.php/update-web-config-programmatically

참고 : web.config를 변경하면 ASP.NET이 변경 사항을 감지하고 응용 프로그램을 다시로드 (응용 프로그램 풀 재활용)하고 세션, 응용 프로그램 및 캐시에 보관 된 데이터의 효과가 손실됩니다 (세션 상태 가정). InProc이고 상태 서버 또는 데이터베이스를 사용하지 않음).


답변

이것은 AppSettings를 업데이트하는 데 사용하는 방법이며 웹 및 데스크톱 응용 프로그램 모두에서 작동합니다. connectionStrings를 편집해야하는 경우 해당 값을 가져온 System.Configuration.ConnectionStringSettings config = configFile.ConnectionStrings.ConnectionStrings["YourConnectionStringName"];다음 config.ConnectionString = "your connection string";. 이 connectionStrings섹션에 의견 Web.Config이 있으면 제거됩니다.

private void UpdateAppSettings(string key, string value)
{
    System.Configuration.Configuration configFile = null;
    if (System.Web.HttpContext.Current != null)
    {
        configFile =
            System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
    }
    else
    {
        configFile =
            ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    }
    var settings = configFile.AppSettings.Settings;
    if (settings[key] == null)
    {
        settings.Add(key, value);
    }
    else
    {
        settings[key].Value = value;
    }
    configFile.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}


답변