Utilisation de ConfigurationManager pour charger la configuration à partir d'un emplacement arbitraire

Je développe un composant d'accès aux données qui sera utilisé dans un site Web qui contient un mélange de pages ASP et ASP.NET classiques, et j'ai besoin d'un bon moyen de gérer ses paramètres de configuration.

J'aimerais utiliser un ConfigurationSection personnalisé, et pour les pages ASP.NET, cela fonctionne très bien. Mais lorsque le composant est appelé via COM Interop à partir d'une page ASP classique, le composant ne s'exécute pas dans le contexte d'une requête ASP.NET et n'a donc aucune connaissance de web.config.

Existe-t-il un moyen de dire au ConfigurationManager de simplement charger la configuration à partir d'un chemin arbitraire (par exemple ..web.config si mon assemblage est dans le 4 dossier) ? Si c'est le cas, je pense que mon composant peut revenir à cela si la valeur par défaut ConfigurationManager.GetSection renvoie null pour ma section personnalisée.

Toute autre approche serait la bienvenue !

请先 登录 后评论

2 réponses

Ishmaeel

Essayez ceci :

System.Configuration.ConfigurationFileMap fileMap = new ConfigurationFileMap(strConfigPath); //Path to your config file
System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
请先 登录 后评论
Joseph Daigle

En plus de la réponse d'Ishmaeel, la méthode OpenMappedMachineConfiguration() renverra toujours un objet Configuration. Donc, pour vérifier s'il est chargé, vous devez vérifier la propriété HasFile où true signifie qu'il provient d'un fichier.

请先 登录 后评论