ConfigurationSection ConfigurationManager.GetSection () renvoie toujours null
Je suis en train d'apprendre comment utiliser la classe ConfigurationSection. J'ai utilisé la IConfigurationSectionHandler mais libéré qu'il a été amortis. Donc, pour être un bon garçon, je suis en train de la "bonne" façon. Mon problème est qu'il est toujours retourner null.
J'ai une application console et d'une DLL.
class Program
{
static void Main(string[] args)
{
StandardConfigSectionHandler section = StandardConfigSectionHandler.GetConfiguration();
string value = section.Value;
}
}
app config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="ConfigSectionGroup">
<section name="ConfigSection" type="Controller.StandardConfigSectionHandler, Controller" />
</sectionGroup>
</configSections>
<ConfigSectionGroup>
<ConfigSection>
<test value="1" />
</ConfigSection>
</ConfigSectionGroup>
</configuration>
gestionnaire de section de la bibliothèque:
namespace Controller
{
public class StandardConfigSectionHandler : ConfigurationSection
{
private const string ConfigPath = "ConfigSectionGroup/ConfigSection/";
public static StandardConfigSectionHandler GetConfiguration()
{
object section = ConfigurationManager.GetSection(ConfigPath);
return section as StandardWcfConfigSectionHandler;
}
[ConfigurationProperty("value")]
public string Value
{
get { return (string)this["value"]; }
set { this["value"] = value; }
}
}
}
Ce que jamais les valeurs que j'essaie pour la "ConfigPath" il va retourner la valeur null, ou de jeter une erreur en disant "test" est un élément méconnu. Les valeurs que j'ai essayé:
- ConfigSectionGroup
- ConfigSectionGroup/
- ConfigSectionGroup/ConfigSection
- ConfigSectionGroup/ConfigSection/
- ConfigSectionGroup/ConfigSection/test
- ConfigSectionGroup/ConfigSection/test/
source d'informationauteur Jon
Vous devez vous connecter pour publier un commentaire.
Il ya un couple de choses de mal avec votre code.
Vous êtes toujours le retour
null
dans votreGetConfiguration
méthode, mais je vais supposer que c'est juste dans la question, et non pas dans votre code.Plus important encore, le format de la
ConfigPath
valeur est incorrecte. Vous avez une barre obliqueConfigSectionGroup/ConfigSection/
de supprimer le dernier slash et il sera en mesure de trouver la section.Le plus important, de la manière que vous avez déclaré votre section de la configuration du système s'attendre à ce que votre "valeur" être stocké dans un attribut de votre
ConfigSection
élément. Comme ceAfin de, mettre tous ensemble:
Pour en savoir plus sur la façon dont vous configurez les sections de configuration, veuillez consulter cette excellente documentation MSDN: Comment: Créer des Sections de Configuration à l'Aide de ConfigurationSection. Il contient également des informations sur la façon de stocker les valeurs de configuration dans des sous-éléments (comme le test de l'élément).
J'étais problème similaire avec:
Mon fichier de configuration:
J'ai une erreur:
J'ai été trouvé solution intéressante, j'ai déplacé le fichier de classe dans un projet distinct (type = Bibliothèque de Classe, nom = SwBankConfigHelper) . Je l'ai ajouté à la Référence et de modifier le fichier de configuration:
Et mon code fonctionne très bien!