Laden...

Windows Dienst - Problem mit externen Bibliotheken oder App.Config

Erstellt von Freecastle vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.658 Views
F
Freecastle Themenstarter:in
25 Beiträge seit 2008
vor 15 Jahren
Windows Dienst - Problem mit externen Bibliotheken oder App.Config

Hallo,

ich habe ein großes Problem... und zwar habe ich ein paar Komponenten entwickelt, deren Funktionalität ich auch als Windows Dienst anbieten will.

Ein Windows Dienst-Projekt habe ich erstellt, und ich kann auch den Dienst starten und beenden, das ist kein Problem.
Ich habe auch die paar Aufrufe an meine Komponenten eingebettet in den Windows Dienst. Aber genau da ist das Problem, es scheint so, als würde er hier einfach gar nichts tun. Ich benutze auch log4net in meinem Windows-Dienst, aber die Log-Aufrufe werden auch nicht in die entsprechenenden Dateien geschrieben.

Ich habe allerdings eine App.Config in das Windows-Dienst Projekt eingefügt, das die Konifugration von log4net enthält. Diese App.Config habe ich auch schon an anderer Stele benutzt, d.h. die ist fehlerfrei...

Wo ist mein Problem? Ich muss doch nur die abhängigen DLLs in dem Windows Dienst Projekt referenzieren und eben eine entsprechende App.Config bereit stellen. Oder habe ich da was übersehen???
Ich würde mal annehmen, dass es wohl irgendwie was mit der App.Config zu tun hat, weil eben auch nichts geloggt wird... aber was muss ich hier tun?!

Super wenn mir da jemand auf die Sprünge helfen könnte...

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Freecastle,

ich denke, es liegt an der Umgebung. Also das z.B. die Dateien in anderen Verzeichnissen gesucht werden oder in andere Verzeichnisses geschrieben werden, also du erwartest.

Siehe auch [FAQ] Pfad zur eigenen Anwendung (EXE) ermitteln.

herbivore

F
Freecastle Themenstarter:in
25 Beiträge seit 2008
vor 15 Jahren

Hi,

danke erst mal!

Also ich versteh aber nicht so ganz wie mir das helfen soll? Ich benutze ja quasi nur andere Assemblies in meinem Windows Dienst, und die habe ich ja schon per Referenz in mein Projekt hinzugefügt. Wenn ich das kompiliere, dann kommen die auch automatisch in das Output-Directory des Windows Dienst.
Meine App.Config kommt da ja auch rein, daran kann ich nichts ändern.

Oder meinst du, dass meine Log-Outputs evtl. wo anders stehen müssten?

3.971 Beiträge seit 2006
vor 15 Jahren

Wenn der Dienst gestartet wird, wird auch die die Konfigurationsdatei App.config geladen. Eventuell stimmt was mit dem Inhalt der Datei nicht oder sie hat den falschen Namen.

PS: Log4net lässt sich auch über eine seperate Xml-Datei konfigurieren

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

F
Freecastle Themenstarter:in
25 Beiträge seit 2008
vor 15 Jahren

Hm also die Datei heißt App.Config, d.h. der Name müsste schon stimmen.

Es geht mir dabei auch nicht primär um log4net, aber daran kann ich halt erkenen, dass wohl was nicht richtig geladen wird, da ich direkt nach dem Start vom Windows Dienst was logge. D.h. ich kann eigentlich irgendeinen Fehler in meinen eigenen Assemblies ausschließen (die werden übrigens auch anderswo eingesetzt und funktionieren, aber das nur am Rande).

Also wird wohl was mit dem Inhalt nicht stimmen oder wie? Ok, werde ich mal durch try&error testen (also mal ne minimale App.Config und so)... aber eigentlich sollte das ja schon passen, da ich diese App.Config auch schon an anderer Stelle eingesetzt habe.

F
Freecastle Themenstarter:in
25 Beiträge seit 2008
vor 15 Jahren

Also auch mit ner minimalen App.Config klappts nicht...
Wie gesagt ich benutze das log4net nur zum Testen, und da hab ich jetzt quasi die minimalsten Einstellungen genommen. Komisch...

3.971 Beiträge seit 2006
vor 15 Jahren

Wenn dein Programm den Namen Windows-Dienst.exe hat, muss die Config-Datei im Ausgabeverzeichnis Windows-Dienst.exe.config heißen, alles andere wird nicht Funktionieren.

App.config heißt die Datei nur in VisualStudio

PS: Hier der Link von Apache zur (Xml-)Konfiguration, ohne App.Config: log4net Manual - Configuration

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

F
Freecastle Themenstarter:in
25 Beiträge seit 2008
vor 15 Jahren

Naja das ist mir schon klar, so ist es auch 😉
Wird ja alles automatisch von VS gehandelt...

Log4net ist für mich hier auch nur Mittel zum Zweck um das eben zu testen.

X
1.177 Beiträge seit 2006
vor 15 Jahren

Huhu,

dann debugge doch deinen Dienst mal. Debuggen -> an den Prozess anhängen.

Man kann auch dem Dienst beim OnStart einen Sleep(20000) mitgeben, dann hat man 20 sek Zeit sich anzuhängen. Aber bitte nicht mehr als 30 Sekunden eintragen, sonst wird dein Dienst nicht korrekt gestartet.

Ein Windows Dienst-Projekt habe ich erstellt, und ich kann auch den Dienst starten und beenden, das ist kein Problem.
Ich habe auch die paar Aufrufe an meine Komponenten eingebettet in den Windows Dienst. Aber genau da ist das Problem, es scheint so, als würde er hier einfach gar nichts tun.

Mir scheint allerdings, dass Du zwar den Dienst startest, aber nicht deine Komponenten. Vermutlich wird deine eigentliche "Arbeitsroutine" nicht korrekt ausgeführt. Benutz einfach mal das normale Eventlog umd Dir nachrichten ausgeben zu lassen.

🙂

Xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

R
494 Beiträge seit 2006
vor 15 Jahren

Hast du die Berechtigung für alle Dateien für das Konto unter dem der Dienst läuft auch richtig gesetzt?