Comment puis-je modifier/manipuler le web.config
par programme avec C #? Puis-je utiliser un objet de configuration et, si oui, comment puis-je charger le fichier web.config
dans un objet de configuration? J'aimerais avoir un exemple complet modifiant la chaîne de connexion. Après la modification, le web.config
devrait être réécrit sur le disque dur.
Ici c'est du code:
var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=...";
configuration.Save();
Voir plus d'exemples dans cet article , vous devrez peut-être jeter un coup d'œil à surpation d'identité .
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
//section.SectionInformation.UnprotectSection();
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();
Le fichier web.config étant un fichier xml, vous pouvez ouvrir web.config à l'aide de la classe xmldocument. Obtenez le nœud de ce fichier XML que vous souhaitez mettre à jour, puis enregistrez le fichier XML.
voici une URL qui explique plus en détail comment mettre à jour le fichier web.config par programme.
http://patelshailesh.com/index.php/update-web-config-programmatically
Remarque: si vous apportez des modifications à web.config, ASP.NET les détectera et rechargera votre application (pool d'applications de recyclage), ce qui aura pour effet de conserver les données conservées dans Session, Application et Cache. est InProc et n'utilise pas de serveur d'état ou de base de données).
C’est une méthode que j’utilise pour mettre à jour AppSettings et qui fonctionne à la fois pour les applications Web et de bureau. Si vous devez modifier connectionStrings, vous pouvez obtenir cette valeur de System.Configuration.ConnectionStringSettings config = configFile.ConnectionStrings.ConnectionStrings["YourConnectionStringName"];
puis définissez une nouvelle valeur avec config.ConnectionString = "your connection string";
. Notez que si vous avez des commentaires dans la section connectionStrings
de Web.Config
ceux-ci seront supprimés.
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);
}