Modificare un web.config in modo programmatico con C # (.NET)

Come posso modificare / manipolare il web.config programmatico con C #? Posso usare un object di configurazione e, in caso affermativo, come posso caricare web.config in un object di configurazione? Mi piacerebbe avere un esempio completo cambiando la stringa di connessione. Dopo la modifica, il web.config dovrebbe essere riscritto sul disco fisso.

Ecco un codice:

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

Vedere altri esempi in questo articolo , potrebbe essere necessario dare un’occhiata alla rappresentazione .

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

Poiché il file web.config è un file xml, è ansible aprire web.config utilizzando la class xmldocument. Prendi il nodo da quel file xml che vuoi aggiornare e quindi salva il file xml.

ecco l’URL che spiega in modo più dettagliato come è ansible aggiornare il file web.config a livello di codice.

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

Nota: se si apportano modifiche a web.config, ASP.NET rileva le modifiche e ricaricherà l’applicazione (riciclare il pool di applicazioni) e l’effetto di tali dati verrà conservato in Session, Application e Cache andrà perso (presupponendo lo stato della sessione è InProc e non utilizza un server o database di stato).

Questo è un metodo che uso per aggiornare AppSettings, funziona sia per applicazioni web che desktop. Se è necessario modificare connectionStrings, è ansible ottenere tale valore da System.Configuration.ConnectionStringSettings config = configFile.ConnectionStrings.ConnectionStrings["YourConnectionStringName"]; e quindi imposta un nuovo valore con config.ConnectionString = "your connection string"; . Si noti che se si hanno dei commenti nella sezione connectionStrings in Web.Config questi verranno rimossi.

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