Entwickler-Ecke

ASP.NET und Web - auslesen anderer app.config datei


Reinhardl - Do 11.09.08 18:28
Titel: auslesen anderer app.config datei
HI, ich möchte in asp.net eine app.dll.config auslesen (Class library) welche wie unten aussieht. Speziell bin ich an einem Wert interessiert (CustomHeader), den ich lesen möchte und auch verändern bzw. schreiben möchte ?` In meiner Dll lese ich die jeweiligen werte mittels Properties.Settings.Default.CustomHeader aus !


Ich habe es so probiert ?


C#-Quelltext
1:
2:
3:
4:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
            fileMap.ExeConfigFilename = ConfigurationManager.AppSettings["TransportAgentConfig"];
            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
            string currentValue = config.AppSettings["CustomHeader"]; //is inaccessible to its protection level (error )




Ich danke euch für jede HIlfe

lg reinhardl



XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
<configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="TransportAgent.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      <section name="AntiSpam.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

  </configSections>


  <applicationSettings>
    <TransportAgent.Properties.Settings>
      <setting name="MailboxAgent" serializeAs="String">
        <value>MailboxAgent</value>
      </setting>
      <setting name="CustomHeader" serializeAs="String">
        <value>X-Unverified-Sender</value>

.....
....


Moderiert von user profile iconAXMD: C#-Tags hinzugefügt
Moderiert von user profile iconAXMD: XML-Tags hinzugefügt


AXMD - Fr 12.09.08 08:47

Hast du dir schon einmal den System.XML-Namespace und dessen Klassen angesehen?

AXMD


Reinhardl - Fr 12.09.08 10:21

hi..

nach vielen versuchen, auslesen funktioniert so :


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
if (!IsPostBack)
            {
                ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
                fileMap.ExeConfigFilename = ConfigurationManager.AppSettings["TransportAgentConfig"];
                Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
                ClientSettingsSection section = (ClientSettingsSection)config.GetSection("userSettings/TransportAgent.Properties.Settings");
                string currentValue = section.Settings.Get("DeleteSpam").Value.ValueXml.InnerText;
                if (currentValue.Equals("False", StringComparison.CurrentCultureIgnoreCase))
                {
                    spamFilter.Checked = false;

                }
                else
                {
                    spamFilter.Checked = true;

                }




Weiß vielleicht jemand wie ich nen wert ändern kann ? Wäre für ein Beispiel echt sehr dankbar !

lg reinhardl

Moderiert von user profile iconAXMD: C#-Tags hinzugefügt


AXMD - Fr 12.09.08 10:26

Hallo!

Bitte verwende in deinen Posts der Übersichtlichkeit halber C#-Tags.
Zum Problem: wie bereits oben beschrieben solltest du dir einmal den XML-Namespace ansehen - da findest du XML-Parser und damit Möglichkeiten, Werte auch zu ändern.

AXMD


Kha - Fr 12.09.08 14:24

user profile iconReinhardl hat folgendes geschrieben:
Weiß vielleicht jemand wie ich nen wert ändern kann ?
Hm, ValueXml.InnerText besitzt doch auch einen Setter... :gruebel: ;) ? Configuration.Save nicht vergessen.
Vielleicht landet die Änderung dann aber in einer user.config, app.config ist eigentlich nicht zum Verändern gedacht. In diesem Fall bleibt wohl wirklich nur noch XML übrig :nixweiss: .


Reinhardl - Fr 12.09.08 20:33

hi.

ja ich habs mit xml namespace gemacht, danke für den Tipp..

jetzt steht ich vor dem lächerlichen problem dass ich nicht weiß wie cih usersettings auslesen kann ?? Bei Appsettings verwende ich Properties.Settings.Default.NameElement , aber wie mache ich dass mit Usersettings ?

Bitte um Unterstützung


lg reinhardl


Reinhardl - So 14.09.08 23:02

hi. habs gelöst, war irgendetwas falsch, aber funkt jetzt.

Nun hab ich ein hoffentlich letztes problem. Ich ändere von meinem webapp aus einen Wert von der namederdll.config.dll Datei, welches auch gut funktioniert. Das schräge ist, dass, wenn ich dann meine ClassLibrary neu starte (anderes projekt exhcange plugin) damit die Datei neu eingelesen wird, ich immer den alten Wert bekomme ? Liege ich richtig dass diese Datei gar nicht ausgelesen wird beim startenm da ich diese gelöscht habe und funktioniert auch ? Den Wert den ich verändern /auslesen möchte habe ich als UserSetting definiert. WOhin muss ich die Änderungen schreiben von meinem webapp aus wenn schon nicht in oben genannte datei ?

bitte um hilfe

lg

reinhardl