Ich habe kürzlich einen WCF-Dienst (DLL) und einen Diensthost (Exe) erstellt. Ich weiß, dass mein WCF-Dienst ordnungsgemäß funktioniert, da ich den Dienst erfolgreich zu WcfTestClient hinzufügen kann.
Es scheint jedoch, dass ich auf ein Problem stoße, wenn ich meine WCF von einem Service-Host (exe) aus verwende. Ich kann meinem Service-Host (exe) einen Verweis auf die WCF (dll) hinzufügen und die erforderlichen Komponenten für die exe erstellen. Kompilieren Sie die Exe und installieren Sie sie schließlich mithilfe von InstallUtil, z. B. das Service-Installationsprogramm, den Service-Host und die app.config. Als ich jedoch versuchte, den Dienst in der Microsoft Management Console zu starten, wird der Dienst sofort nach dem Start beendet.
Also begann ich zu untersuchen, was genau dieses Problem verursachen könnte, und stellte diesen Fehler im Anwendungsprotokoll in der Ereignisanzeige fest.
Beschreibung:
Der Dienst kann nicht gestartet werden. System.InvalidOperationException: Der Dienst 'Service' hat keine Anwendungsendpunkte (ohne Infrastruktur). Dies kann daran liegen, dass für Ihre Anwendung keine Konfigurationsdatei gefunden wurde oder dass in der Konfigurationsdatei kein mit dem Dienstnamen übereinstimmendes Dienstelement gefunden wurde oder dass im Dienstelement keine Endpunkte definiert wurden.
Dieser Fehler wird tatsächlich in der generiert OnStart
; von meiner Exe, wenn ich diesen Anruf durchführe ServiceHost.Open()
. Ich habe zahlreiche Posts gesehen, in denen andere Personen auf dieses Problem gestoßen sind. Die meisten, wenn nicht alle, behaupten jedoch, dass der Name oder der Vertrag des Dienstes angegeben ist. Namespace und Klassenname werden nicht angegeben. Ich habe diese beiden Einträge in meiner Konfigurationsdatei überprüft. sowohl in der exe als auch in der dll, und sie passen perfekt zusammen. Ich habe andere Leute im Büro hinter mir überprüfen lassen, um sicherzustellen, dass ich nicht irgendwann blind wurde, aber sie kamen natürlich zu dem gleichen Schluss wie ich, dass alles so aussah, als wäre es korrekt angegeben. Ich bin wirklich ratlos darüber, was zu diesem Zeitpunkt los ist. Könnte mir jemand bei diesem Problem helfen?
Ein weiterer möglicher Grund dafür ist, dass die app.config nie gelesen wird. Zumindest nicht der, von dem ich denke, dass er gelesen werden sollte. Könnte dies das Problem sein? Wenn ja, wie kann ich dieses Problem beheben? Auch hier wäre jede Hilfe dankbar.