web-dev-qa-db-fra.com

Changer un web.config par programme avec C # (.NET)

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.

90
Kottan

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é .

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

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).

5
shailesh

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