Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#1

ConfigurationManager speichert nicht - was kann los sein?

  Alt 29. Sep 2006, 17:55
Hallo,

aus der NET-SDK-Doku habe ich folgenden Code übernommen:
Code:
using System.Configuration;
using JThomas.DGW.Config;
//...
Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//  wenn der DbProvider in <appSettings> noch fehlt, dann eintragen
if (cfg.Sections["appSettings"] == null)       {
    ConfigurationSection newSection = cfg.AppSettings;
    cfg.Sections.Add("appSettings", newSection);
    newSection = cfg.Sections["appSettings"] as ConfigurationSection;
    newSection.SectionInformation.ForceSave = true;
    cfg.Save(ConfigurationSaveMode.Full);
}
//  eigene Section <Senderliste> eintragen, sofern erforderlich
if (cfg.Sections["DGW-Sender"] == null)           {
    SenderSection newSection = new SenderSection();
    newSection.Senderliste.Add(new SenderElement("RBB", "dgw-rbb", "SYSDBA", "masterkey", Arbeiten.Einlesen, "aktuell", DateTime.Now));
    newSection.Senderliste.Add(new SenderElement("NDR"));
    cfg.Sections.Add("DGW-Sender", newSection);
    cfg.Save(ConfigurationSaveMode.Full);  //  wird ohne Exception übergangen
}
Die 'eigene Section <senderliste>' habe ich nach den Beispielen aus ConfigurationElement-Klasse wörtlich übernommen und nur die eigene ConfigurationProperty vorgemerkt. Im übrigen habe ich den obigen Code aus dem ersten Beispiel zur ConfigurationManager-Klasse übernommen.

Nach der Arbeit mit dem Debugger scheint alles sauber zu laufen (es gab bei entsprechender Änderung auch eine provozierte Exception); aber appl.exe.config wird nicht gespeichert. Hat jemand eine Idee, was ich übersehen habe oder in welche Richtung ich weiter versuchen kann?

[/edit]Nachtrag: Ich arbeite ausschließlich lokal und bin mit UserName (mit Admin-Rechten) unter WinXP angemeldet. Fehlt vielleicht eine UserPolicy? Wenn ja, wo und welche?

Zusatzfrage: OpenExeConfiguration() liefert nicht nur die Inhalte der appl.exe.config, sondern in einer gemeinsamen Liste auch die Inhalte von machine.config, wie ich durch Analyse von cfg.Sections[] und cfg.SectionGroups[] festgestellt habe. Ist das von NET beabsichtigt, oder fehlt eine Einstellung?

Danke! Jürgen

Hinweis: Das Testprogramm habe ich mit VC# Express und NET 2.0 erstellt. Den integrierten Settings-Manager möchte ich nicht nutzen, weil ich meine Namespaces und Bezeichner selbst festlegen und SectionGroups verwenden will.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat