Falsch geladene App.Config

25/09/2008 - 08:48 von Roland Schumacher | Report spam
Hallo

Ich habe ein .NET COM AddIn in Office 2002/XP. Das AddIn wird geladen. Im
Code muss das AddIn Settings laden. Das wird über ein Framework gelöst, da
die Settings ziemlich kompliziert aufgebaut sind.

Das Problem ist nun, dass die CLR die Sachen dann im Office Verzeichnis
sucht.

Hier einwenig Code wo es bum macht.
[...]
{
//Filename des Config-Files bestimmen
System.Configuration.ExeConfigurationFileMap configMap = new
System.Configuration.ExeConfigurationFileMap();
configMap.ExeConfigFilename Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase),
"Programm.config").Replace(@"file:\", "");

//Wenn Config-File vorhanden ist
if (File.Exists(configMap.ExeConfigFilename))
{
//Config-File öffnen
System.Configuration.Configuration config System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(configMap,
System.Configuration.ConfigurationUserLevel.None);

configuration = (WordPlusSection)config.GetSection("Sektion"); //Hier
macht es bum.

//Pfadvariablen ersetzen
foreach (ConnectionElement connectionstring in
configuration.Online.Connections)
[...]

Den Pfad zu .config wird richtig angezeigt. Den erreichen wir. Deshalb ist
uns nicht ganz klar wie so es bei config.GetSection bum macht.

Bei configuration = (WordPlusSection)config.GetSection("Sektion") macht es
bum. Die Sektion gibt es im Config. Aber wenn man die Collection anschaut,
sind nur solche Sections drin aus der Machine.config.

Bei den AddIns für Office 2003/2007 macht das keien Problem. Wenn ich das
richtig verstehe, ist das bei MS bekannt. Aber eine Lösung habe ich noch
nicht gefunden. Jemand Anderes vielleicht?

Gruss
Roland Schumacher
http://blog.geniali.ch/
http://jotd.geniali.ch/
 

Lesen sie die antworten

#1 Frank Dzaebel
25/09/2008 - 09:34 | Warnen spam
Hallo Roland,

  configuration = (WordPlusSection)config.GetSection("Sektion");
//Hier macht es bum.



Naja, da ist zunàchst die Fehlermeldung wichtig.
Dann teile das auf. Zuerst:

ConfigurationSection sec = config.Sections["Sektion"];

Das darf schonmal nicht null sein. Beachte
hier Gross/Kleinschreibungs-Sensitivitàt!
Dannach wàre zu prüfen, ob es denn überhaupt auch
in eine (WordPlusSection) gecastet werden kann.
Dazu wàre wieder die Klassendefinition wichtig.

Wie sieht denn die Section "Sektion" überhaupt
in der Programm.config aus?


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen