2016-10-08 1 views
0

Mon exigence est de mettre à jour le fichier appsettings au moment de l'exécution lorsque l'application est lancée. Mais rencontré un problème où web config est remplacé à chaque minute avec les nouveaux appsettings. Comment puis-je arrêter de remplacer chaque minute?webconfig est remplacé chaque minute automatiquement

Je suis passé par différentes solutions ici et mises en œuvre comme ci-dessous:

  1. Dans config web, nous avons chemin par défaut pour appsettings:
 
appSettings file="C:\Config\MyProj\Appsettings.Config"
  1. Dans Global.asax.cs, j'appelle la méthode suivante pour remplacer dynamiquement le fichier my appsettings.
 

    public void ChangeAppSettings(string path) 
    { 
     System.Configuration.Configuration configuration = null; 
     if (System.Web.HttpContext.Current != null) 
     { 
      configuration = 
       System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); 
     } 
     else 
     { 
      configuration = 
       ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
     } 
     // update appconfig file path 
     configuration.AppSettings.File = path; 

     // Save the configuration file. 
     configuration.Save(ConfigurationSaveMode.Modified); 

     // Force a reload in memory of the changed section. 
     ConfigurationManager.RefreshSection("appSettings"); 
    } 

Ou est-il une meilleure façon de mettre en œuvre?

+0

Pouvez-vous fournir plus d'informations sur les raisons pour lesquelles ce comportement est nécessaire? Pourquoi ne pas utiliser une base de données pour conserver ces paramètres d'application? Et laissez les fichiers statiques aux fichiers .config. – Alexei

+0

Nous avons cinq environnements et chaque environnement a ses propres paramètres d'application et aussi certains en commun. Chaque environnement a une application Web et une application de console qui partagent les mêmes paramètres d'application. Lorsque nous déployons, il est fastidieux de mettre à jour toute la configuration individuellement. Nous sommes arrivés avec une solution où chaque dossier de projet aura une variable d'environnement qui dit de prendre le bon fichier de paramètres de l'application. Et quand l'application est démarrée obtient le chemin d'environnement des appsettings et charge en conséquence – Niru

Répondre

0

Le code suivant a fait l'affaire, à chaque fois que nous actualisons la méthode ChangeAppSettings de configuration. Donc, je viens d'ajouter pour vérifier si la configuration est déjà modifiée, puis ne plus actualiser.

if (!path.Equals(configuration.AppSettings.File)) 

{ 
    // update appconfig file path 

    configuration.AppSettings.File = path; 

    // Save the configuration file. 

    configuration.Save(ConfigurationSaveMode.Modified); 

    // Force a reload in memory of the changed section. 

    ConfigurationManager.RefreshSection("appSettings"); 

}