Hallo,
da ich momentan eine Anwendung schreibe, welche Zugriff auf eine Datenbank hat über meherere gespeicherte Prozeduren (Die sich ändern können auch im Namen) hab ich mir überlegt, dafür eine eigene SectionGroup in der AppConfig zu erstellen. Allerdings wird mir nicht alles zurück gegeben, was ich brauch.
Die ConfigSection sieht wie folgt aus:
<Procedures>
<ChangeStateProcedure ProcedureName="InsertTable_ChangeState" />
<GetStatesFilterProcedure ProcedureName="SelectTable_StatesFilter" Filter ="4" />
...
</Procedures>
Ich denke man erkennt anhand der 2. Zeilen, wie die ConfigSectionGroup aufgebaut ist.
Definiert sind diese Sections als SingleTagSectionHandler. Nun wollte ich diese Sections wie gesagt auslesen.
Folgendes hab ich probiert:
System.Collections.IDictionary procedureSets = (System.Collections.IDictionary)System.Configuration.ConfigurationSettings.GetConfig ("Procedures/GetStatesFilterProcedure");
Der Anschließende Datenbankaufruf liefert nichts zurück, da der Filter nicht mit eingelesen wird. - Was ich schon recht merkwürdig finde.
Denn schau ich mir den Inhalt des Dictionary an, sieht es wie folgt aus:
ProcedureName = "SelectTable_StatesFilter"
Filter = ""
Hat jemand eine Ahnung woran das liegen könnte oder wie ich es eventuell besser Lösen könnte?
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Hallo inflames2k,
Warum lässt du VisualStudio das ganze nicht machen?
Du kannst auch eigene (serialisierbare) Typen von VisualStudio in die App.config einbauen lassen.
Gruß
Juy Juka
Naja da gäbs 2 Gründe, zum ersten weil ich nicht wüsste wie (handelt sich ja vom Prinzip her nicht um eine App.Config sondern die web Variante für einen Webservice. - Was sich aber von der Sache her nicht viel nimmt.
Und zum zweiten, weil ichs schön übersichtlich eben in der eigenen Section haben wollte / möchte, da es sich um 8 Prozeduren handelt.
Es funktioniert nun, woran es auch immer vorhin lag. - Werd das mal beobachten. Falls ich herausgefunden hab warum es vorhin nicht funktionierte, jetzt aber funktioniert geb ichs bekannt. 😉
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Ich muss hier nochmal einhaken.
Ich wollt mir nun eine Klasse erstellen, welche bei Initialisierung eine bestimmte ConfigSection automatisch einliest. - Leider find ich aber trotz ewigem suchen keinen Weg die komplette ConfigSection einzulesen.
Was ich mir vorgestellt hab ist folgendes:
class ProcedureConfigurationReader : Dictionary<String, IDictionary>
{
public ProcedureConfigurationReader()
{
// hier sollte das initialisieren der ConfigurationSectionGroup stattfinden
foreach (Configuration.ConfigurationSection section in configGroup.Sections)
{
this.Add(section.SectionInformation.Name, (IDictionary)ConfigurationManager.GetSection("Procedures\" + section.SectionInformation.Name));
}
}
}
Ich komm auf keinen grünen Zweig bei der Initialisierung der Sectiongroup. - Ich gehe davon aus, wenn ich diese Initialisiert habe, sollte der Rest funktionieren.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Hallo inflames2k,
weil ich nicht wüsste wie
Nur zur vollständigkeit:
Gruß
Juy Juka
Ich mache das immer auf die "althergebrachte Art" mit IConfigurationSectionHandler - hatte damit noch nie Probleme. Bekomme eben den kompletten Knoten und muss mich halt dann selbst ums Mapping kümmern.