Alterar um web.config programaticamente com c # (.net)

Como posso modificar / manipular o web.config programaticamente com o C #? Posso usar um object de configuração e, se sim, como posso carregar o web.config em um object de configuração? Eu gostaria de ter um exemplo completo alterando a seqüência de conexão. Após a modificação, o web.config deve ser gravado de volta no disco rígido.

Aqui está algum código:

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

Veja mais exemplos neste artigo , você pode precisar dar uma olhada na representação .

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

Como o arquivo web.config é um arquivo xml, você pode abrir o web.config usando a class xmldocument. Obtenha o nó desse arquivo xml que você deseja atualizar e, em seguida, salve o arquivo xml.

aqui está o URL que explica com mais detalhes como você pode atualizar o arquivo web.config programaticamente.

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

Nota: se você fizer alguma alteração no web.config, o ASP.NET detectará essas alterações e recarregará seu aplicativo (reciclar pool de aplicativos) e o efeito disso é que os dados mantidos em Sessão, Aplicativo e Cache serão perdidos (supondo estado de session é InProc e não usa um servidor de estado ou database).

Esse é um método que uso para atualizar o AppSettings, funciona tanto para aplicativos da Web quanto de desktop. Se você precisar editar connectionStrings, poderá obter esse valor em System.Configuration.ConnectionStringSettings config = configFile.ConnectionStrings.ConnectionStrings["YourConnectionStringName"]; e defina um novo valor com config.ConnectionString = "your connection string"; . Note que se você tiver algum comentário na seção connectionStrings no Web.Config estes serão removidos.

 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); }