Laden...

Auf Konfigurationsdatei aus Bibliothek/DLL zugreifen

Erstellt von Mackerlama vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.827 Views
M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren
Auf Konfigurationsdatei aus Bibliothek/DLL zugreifen

Hallo,

in Exchange 2007 Routing Agent -> prüfen ob Sender und Empfänger lokal sind habe ich schon eine Frage zu dem Thema Exchange Transport-Agent gestellt und selbst eine Lösung gepostet. (Wobei mir diese eher als Notlösung erscheint.)

Nun habe ich eine weitere Frage.
Der Transport-Agent, genauer gesagt der RoutingAgent wird per DLL Bibliothek vom Transport-Agent Dienst eingebunden. Nun möchte ich ein paar Einstellungen (bspw. Domainname, Mappe MailAdresse1 auf MailadresseXYZ, Mappe alle Mailadressen, usw.) in eine Konfigurationsdatei auslagern. Grundsätztlich können DLLs mit dem Konfigurationsmodell von .NET arbeiten, so viel habe ich zu mindest gelesen. Aber wie ist das genau, wenn die Konfigurationsdatei (händisch) geändert wird?
Muss der Transport-Agent-Dienst dafür neugestartet werden?
Oder liest die DLL bei jedem Arbeitsprozess des Transport-Agent die Konfigurationsdatei neu ein?
Wie kann ich bestimmen, dass die Konfigurationsdatei im Ordner der DLL abgelegt wird? (Bisher habe ich nur mit Einstellungsdateien .settings gearbeitet und diese liegen ja Default in den AppSettingsOrdnern der Nutzer. Anwendungskonfigurationsdateien liegen ja im Verzeichnis der Exe/DLL können aber zur Laufzeit nicht geändert werden)

M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren

Hallo,

ich habe mich wohl wirr ausgedrückt.

Also da ist ein Exchange 2007 Server aktivierten Transport-Agenten-Dienst und einem installierten RoutedAgent. Dieser tut irgendwas. Um flexibler zu sein, wäre es schön, man könnte dem Agent per Datei Einstellungen mitgeben.

Der Agent selbst ist eine Klassenbibliothek, die in C# geschrieben ist. Die Konfigurationsdatei soll im selben Verzeichnis, wie die DLL (Agent) liegen. Geändert soll diese Datei nur extern (per Hand oder evtl. per noch zu erstellenden grafischen Tool).

Wie kann ich da vorgehen?
Eine Einstellungsdatei ist ja Nutzergebunden und liegt irgendwo in des AppData Ordner. Per Anendungskonfigurationsdatei app.config klappt das ganze nicht. Ich kann aus der DLL nicht auf diese Zugreifen. (bspw. per ConfigurationManager klappt nicht).
// Wenn ich nicht irre kann man auf die app.config der DLL über die Anwendung, die wiederrum die DLL einbindet zugreifen. Das hilft hier wohl nicht.

Muss ich selber um Lesen/Schreiben von einer Textdatei, Ini, XML kümmern oder geht das mit dem .NET Konfigurationsmodell?

p.s. vermutlich muss der Agent kurz deaktiviert werden oder? Ansonsten müsste er ja bei "jeder E-Mail", die er verarbeitet, die Datei mit den Einstellungen neu einlesen?

2.298 Beiträge seit 2010
vor 13 Jahren

Wie kann ich bestimmen, dass die Konfigurationsdatei im Ordner der DLL abgelegt wird? (Bisher habe ich nur mit Einstellungsdateien .settings gearbeitet und diese liegen ja Default in den AppSettingsOrdnern der Nutzer. Anwendungskonfigurationsdateien liegen ja im Verzeichnis der Exe/DLL können aber zur Laufzeit nicht geändert werden)

Beide können zur Laufzeit nicht geändert werden bzw. die Anwendung muss neu gestartet werden. Grundlegend ist es der richtige Weg die .NET Konfigurationsvariante zu nehmen.

Alternativ könntest du dir eine Konfigurationsklasse erstellen die du selbst serialisierst & diese an den nötigen Stellen einfach erneut einlesen. Wenn in deinem Dienst eine Hauptschleife werkelt dann eben am Anfang dieser.

So könntest du Änderungen vornehmen und hast diese anschließend auch in der Anwendung.

Für mich hat es sich aber bewährt, den Dienst einfach neuzustarten, so dass er die Konfiguration neu einliest.

Eine Einstellungsdatei ist ja Nutzergebunden und liegt irgendwo in des AppData Ordner. Per Anendungskonfigurationsdatei app.config klappt das ganze nicht. Ich kann aus der DLL nicht auf diese Zugreifen. (bspw. per ConfigurationManager klappt nicht).

Dies sollte aber eigentlich Problemlos möglich sein. Allerdings musst du darauf achten, dass die Konfigurationsdatei in diesem Fall die des Dienstes nicht der DLL sein muss.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren

Selber serialisieren ist zu viel Aufwand und in der app.config des Dienstes möchte ich auch keine Daten hinterlegen. Jetzt läuft es so, dass die Bibliothek eine eigene app.config hat und der Verweis zu dieser eben überschrieben werden muss.
Restarten des Dienstes ist kein Problem. Die Konfiguration muss eh nicht so oft geändert werden.