J'utilise OpenMappedExeConfiguration avec ExeConfigurationFileMap pour charger les fichiers de configuration. Leurs surcharges suggèrent qu'ils ne fonctionnent qu'avec des noms de fichiers. Existe-t-il un moyen de charger un fichier de configuration à partir d'un flux? Contexte: Je souhaite charger des fichiers de configuration stockés en tant que ressources incorporées. Il n'y a pas de représentation de fichier!Charger le fichier de configuration du flux au lieu du fichier
Répondre
N ° Le problème est que cette classe elle-même ne lit pas la configuration. Le chemin du fichier lui-même est finalement utilisé par la classe Configuration
pour charger la configuration, et cette classe veut réellement un chemin physique.
Je pense que la seule solution est de stocker le fichier dans un chemin temporaire et de le lire à partir de là.
Oui. Si votre application est autorisée à changer les fichiers dans le dossier de l'application - mettre à jour le fichier *.config
, par des opérations d'E/S de fichier ou en faisant "section update
/save
/refresh
". La logique est simple dans cette solution - voulez-vous avoir une configuration à distance? Obtenez-le à distance, mettez à jour local et l'avez.
Exemple: Disons que vous avez enregistré votre groupe de section WCF (<bindings>
, <behaviors>
.. etc) dans le fichier wcfsections.test.config
(bien sûr une source distante est possible) et que vous souhaitez la configuration du fichier de configuration « surcharge ». Ensuite configration mise à jour/enregistrer/rafraichir le code ressemble à:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSectionCollection sections = ServiceModelSectionGroup.GetSectionGroup(config).Sections;
sections.Clear();
string fileName = ((GeneralSettings)ConfigurationManager.GetSection("generalSettings")).AppConfigServiceModelSectionFile;
XDocument doc = XDocument.Load(fileName);
var xmlGroup = (from x in doc.Descendants("system.serviceModel") select x).FirstOrDefault();
string[] sectionsInUpdateOrder = { "bindings", "comContracts", "behaviors", "extensions", "services", "serviceHostingEnvironment", "client", "diagnostics" };
foreach (string key in sectionsInUpdateOrder)
{
var e = (from x in xmlGroup.Elements(key) select x).FirstOrDefault();
if (e != null)
{
ConfigurationSection currentSection = sections[e.Name.LocalName];
string xml = e.ToString();
currentSection.SectionInformation.SetRawXml(xml);
}
}
config.Save();
foreach (string key in sectionsInUpdateOrder)
ConfigurationManager.RefreshSection("system.serviceModel/" + key);
Note: l'ordre des mises à jour est important pour le sous-système de validation de WCF. Si vous le mettez à jour dans le mauvais ordre, vous pouvez obtenir des exceptions de validation.
- 1. Manuplate fichier Excel avec OLEDB, avec des flux de fichiers au lieu du fichier physique
- 2. fichier de configuration du flux de travail sharepoint
- 3. SHFileOperation crée le répertoire vide au lieu du fichier
- 4. multi-plateforme d'adressage du fichier de configuration
- 5. Prendre en variable, au lieu du chemin de fichier direct?
- 6. charger le contenu du fichier avec jquery
- 7. charger l'objet Javascript du fichier
- 8. Configuration du fichier journal maven
- 9. Configuration du flux RSS dans MOSS
- 10. Comment activer la journalisation des messages WCF à partir du code au lieu du fichier de configuration de l'application
- 11. Charger le fichier à partir du paquet source
- 12. Ouvrir "fichier" du flux de mémoire?
- 13. Mémoire fuite UIWebView lors du chargement à partir du fichier au lieu de l'URL?
- 14. WebView affiche le fichier .pkg au lieu de le télécharger
- 15. Transférer le nom de fichier du contrôle de téléchargement de fichier vers le flux de fichiers
- 16. Mef et paramètres du fichier de configuration
- 17. Identification du fichier de configuration effectif
- 18. Manipulation dynamique du fichier de configuration
- 19. Protection du fichier de configuration nécessaire
- 20. Rechargement du fichier de configuration .NET
- 21. Lecture du fichier de configuration. Meilleure pratique
- 22. Emplacement du fichier de configuration XML SSIS
- 23. Fichier de configuration personnalisé pour la configuration du fournisseur
- 24. Charger le flux de données JSON du fichier texte dans les objets C#
- 25. Rechargement automatique du fichier de configuration du conteneur Windsor
- 26. Récupère le chemin du fichier de configuration de l'application actuelle
- 27. selfhosting serveur WCF - certificat de charge du fichier au lieu de magasin de certificats
- 28. Lecture du fichier de configuration sans la section Configuration
- 29. System.OutOfMemoryException au téléchargement du fichier
- 30. accurev convertir du numéro de flux au nom du flux
Parfois, "Non" est la bonne réponse :-) –
Un extrait de http://msdn.microsoft.com/en-us/library/system.configuration.configuration.aspx illustre le besoin d'un chemin "physique" : "L'instance de classe Configuration représente la vue fusionnée des paramètres de configuration de tous les fichiers de configuration qui s'appliquent à une entité physique spécifique" –