2010-10-18 4 views
0

Quelle est la différence entre configuration.Save(ConfigurationSaveMode.Modified, true) et configuration.Save()?System.Configuration: Question sur la méthode Configuration.Save

Contexte: J'ai un programme, où je manipule un web.config, que j'utiliser pour configurer services WCF. Je le charge dans un objet Configuration, change certains attributs et le sauvegarde. Quand j'utilise configuration.Save(ConfigurationSaveMode.Modified, true) je reçois un Exception comme ceci:

« Il est une erreur d'utiliser une partie enregistrée comme allowDefinition = « MachineToApplication » au-delà du niveau de l'application ... »

Lorsque j'utilise configuration.Save(), puis Ça marche! La raison de l'exception peut-être la partie <serviceActivations> dans mon web.config (les points d'exception à cette section)

Répondre

1

Les paramètres par défaut pour Save sont:

Save(ConfigurationSaveMode.Modified, false); 

La seule différence serait que vous la force sauvegarder la configuration, même si elle était inchangée. Voir http://msdn.microsoft.com/en-us/library/ms134089.aspx pour plus d'informations.

0

ConfigurationSaveMode.Modified enregistre uniquement les parties de la configuration qui sont différents de la configuration application/système à une configuration local ou itinérant utilisateur (à savoir en utilisant ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel) avec ConfigurationUserLevel.PerUserRoaming ou ConfigurationUserLevel.PerUserRoamingAndLocal).

Étant donné que ASP.NET n'a pas de niveaux d'utilisateur (et de stockage isolé par l'utilisateur), cela n'a aucun sens.

La documentation ne précise pas si l'une des surcharges Configuration.Save fonctionnera réellement dans le cas d'ASP.NET qui utilise un modèle d'héritage de paramètres de configuration complètement différent de celui des applications non ASAS.NET. En pratique, l'utilisation de l'un des WebConfigurationManager pour charger le gestionnaire de configuration est susceptible d'être une condition préalable nécessaire à l'enregistrement du fichier. Une autre approche peut être de charger explicitement un fichier explicitement désigné avec ConfigurationManager.OpenMappedExeConfiguration.

Questions connexes