Ich wurde beauftragt, die App.config unserer App zu erweitern, indem wir eine <configSection>
erstellen, in der wir ein relativ komplexes Objekt in Xml definieren würden. Die Konfiguration sieht wie folgt aus:Was ist los mit meiner App.config?
<configuration>
<appSettings>
<add key="MinWaitTime" value="150" />
<add key="MaxWaitTime" value="900" />
</appSettings>
<configSections>
<section name="clientconfig" type="KeepWarm.ClientConfig" />
</configSections>
<clientconfig username="test user" password="test password">
<urls>
<add url="test1" />
<add url="test2" />
<add url="test3" />
</urls>
</clientconfig>
</configuration>
Schließlich werde ich mehrere definieren zu können, haben <clientconfig>
, aber ich bin zu kämpfen schon immer nur eine arbeiten.
namespace KeepWarm
{
public class ClientConfig : ConfigurationSection
{
[ConfigurationProperty("username", IsRequired = true)]
public string UserName
{
get { return (string)base["username"]; }
set { base["username"] = value; }
}
[ConfigurationProperty("password", IsRequired = true)]
public string Password
{
get { return (string)base["password"]; }
set { base["password"] = value; }
}
[ConfigurationProperty("urls", IsRequired = true)]
public UrlCollection Urls
{
get { return (UrlCollection)base["urls"]; }
set { base["urls"] = value; }
}
}
[ConfigurationCollection(typeof(UrlElement))]
public class UrlCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new UrlElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((UrlElement)element).Url;
}
}
public class UrlElement : ConfigurationElement
{
[ConfigurationProperty("url", IsKey = true, IsRequired = true)]
public string Url
{
get { return (string)this["url"]; }
set { base["url"] = value; }
}
}
}
Aber wenn ich versuche, meine Einstellungen zuzugreifen, wie folgt aus:
var minWaitTime = int.Parse(ConfigurationManager.AppSettings["MinWaitTime"]);
ich eine System.Configuration.ConfigurationErrorsException
bekommen.
Ich habe verschiedene Beispiele online betrachtet, aber nichts scheint in meinem Fall zu helfen. Was mache ich falsch?
Normalerweise würde ich Sie bitten, alle Informationen in der Ausnahme enthalten. Ich glaube jedoch, dass 'configSections' in app.config vor' appSettings' erscheinen muss. –