85 votes

Comment voulez-vous modifier le site web.config appSettings au moment de l'exécution?

Je suis confus sur la façon de modifier le site web.config appSettings valeurs lors de l'exécution. Par exemple, j'ai cette section appSettings:

<appSettings>
  <add key="productspagedesc" value="TODO: Edit this default message" />
  <add key="servicespagedesc" value="TODO: Edit this default message" />
  <add key="contactspagedesc" value="TODO: Edit this default message" />
  <add key="aboutpagedesc" value="TODO: Edit this default message" />
  <add key="homepagedesc" value="TODO: Edit this default message" />
 </appSettings>

Disons que, je veux modifier la "homepagedesc" clé lors de l'exécution. J'ai essayé ConfigurationManager et WebConfigurationManager les classes statiques, mais les paramètres sont en "lecture seule". Quelqu'un peut s'il vous plaît enseignez-moi comment modifier appSettings valeurs au moment de l'exécution? Merci à l'avance!

85voto

Mitch Wheat Points 169614

Vous devez utiliser WebConfigurationManager.OpenWebConfiguration(): Par Exemple:

Dim myConfiguration As Configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~")
myConfiguration.ConnectionStrings.ConnectionStrings("myDatabaseName").ConnectionString = txtConnectionString.Text
myConfiguration.AppSettings.Settings.Item("myKey").Value = txtmyKey.Text
myConfiguration.Save()

Je pense que vous pourriez aussi avoir besoin de définir AllowLocation dans la machine.config. C'est une valeur booléenne qui indique si les pages individuelles peut être configuré à l'aide de l'élément. Si le "allowLocation" est faux, il ne peut pas être configuré dans les différents éléments.

Enfin, cela fait une différence si vous exécutez votre application dans IIS et exécuter votre échantillon d'essai à partir de Visual Studio. L'ASP.NET identité du processus IIS compte, le RÉSEAU ou les SERVICES de RÉSEAU (en fonction de IIS version).

Pourriez avoir besoin d'accorder le RÉSEAU ou les SERVICES de RÉSEAU à l'accès en modification sur le dossier où le web.config réside.

24voto

Joel Potter Points 12759

Modification du web.config provoque généralement un redémarrage de l'application.

Si vous avez vraiment besoin de votre demande pour modifier ses paramètres, alors vous devriez envisager une approche différente tels que les bases de données les paramètres ou la création d'un fichier xml avec les paramètres modifiables.

21voto

Amin Ghaderi Points 109

C'Est la Meilleure Solution pour Ce Scénario (Testé Avec VS2008) :

Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
config.AppSettings.Settings.Remove("MyVariable");
config.AppSettings.Settings.Add("MyVariable", "MyValue");
config.Save();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X