Frage

Ich versuche, einen WCF Servicehost als NT-Dienst auf einem Windows 2007 SP1 Server ausgeführt werden. Der Servicehost ist reponsible für einen einzigen Service-Endpunkt-Hosting: ein Basichttpbinding mit der folgenden Adresse:

http://localhost:5555/ToBlah

Als ich dieses Servicehost auf meinem lokalen Rechner (Windows XP) laufen, es funktioniert gut - wenn ich eine SOAP-Nachricht per Post, bekomme ich einen HTTP-202-Code zurück ( „Accepted“), die die richtige Antwort ist für meine Service, weil der Vertrag IsOneWay = true. Allerdings, wenn ich diese auf meinem 2007-Server laufen lasse, erhalte ich 503-Fehler, wenn ich versuche, den Dienst zu nennen. Ich habe die Protokollierung WCF Nachricht gedreht „den ganzen Weg nach oben,“ aber ich bin keine Protokollierung überhaupt zu sehen, die mich führt zu glauben, dass dies auf einem niedrigeren Niveau geschieht als WCF (der Anruf wird nie an die WCF „Schicht“ ).

Der sys-admins und ich habe verschiedene Formen von httpcfg Befehlen versucht, aber kein Glück so weit.

Ich weiß, versucht, dies in IIS hosten könnte eine mögliche Lösung sein, aber unsere Produktion App Server nicht IIS installiert ist, so möchte ich nur den Service als Servicehost ausgeführt werden.

würde Irgendwelche Ideen sehr geschätzt!

War es hilfreich?

Lösung

Es scheint mir, dass entweder eine Firewall auf dem Server oder eine andere Konfigurationseinstellung des Port blockiert.

Wenn nicht, dann ist Ihr Dienst möglicherweise einen Fehler bei der Erstellung der Servicehost Objektinstanz oder bei der Erstellung des Dienstendpunkts erleben, und der Fehler ist aus irgendeinem Grunde nicht gefangen (?). Sie könnten einige einfache interne Testschleife innerhalb des Service-Code schreiben, um sicherzustellen, dass der Service-Endpunkt korrekt erstellt wurde. Das könnte offenbaren etwas Interessantes.

Darüber hinaus einen Client von diesem Server ausgeführt und zu Ihren Diensten verbinden, die sich auf die Entwicklung Maschine läuft man könnte sagen, etwas mehr? Sie könnten WCFTestClient.exe verwenden, da hier verwiesen: Ist es möglich, die WcfTestClient Arbeit für individuelle Transportkanäle zu machen? . Das könnte Sie zusätzliche Informationen geben. Allerdings müssen Sie MetadataExchange (Mex) in Ihrem Dienst zu verwenden, um dieses Test-Client.

Unterstützung

Alternativ können Sie die WCF-Proben aus dem Visual Studio 2008 Ordner Samples, kombiniert mit WCFTestClient.exe verwenden einige Dienste zu testen, die selbst gehosteten sind und ordnungsgemäß funktionieren erwartet, zunächst innerhalb des Servers und dann von außerhalb des Server.

Andere Tipps

Nun, ich kann immer noch nicht bekommen es auf den Vista-Server zu arbeiten - es immer noch 503 Fehler ist zu geben, aber ich landete es Setup auf einem Windows 2003 Server bekommen, und es scheint jetzt zu funktionieren

.

Eine Sache, die ich in diesem Prozess gelernt haben war die Verwendung von Httpcfg.exe einem Benutzer zu ermöglichen, einen Nicht-Standard-HTTP-Port zu öffnen.

Im Grunde hatte ich so etwas wie den folgenden Befehl ausführen:

httpcfg.exe set urlacl /u http://+:5555/ /a "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)"

Sie können dann die URL ACL-Einstellungen mit diesem Befehl anzuzeigen:

httpcfg.exe query urlacl

Unter Vista können Sie die gleichen Arten von Befehlen netsh laufen (siehe Link unten).

Leider hat dies eine Weile, um herauszufinden, aber es war eine gute Lernerfahrung.

Hier sind einige Links, die ich dachte, nützlich waren dies herauszufinden:

Was Identität für den NT-Dienst konfiguriert? Um das Problem zu isolieren, versuchen Sie ein lokales Administratorkonto verwenden, um zu sehen, ob dieses Problem Erlaubnis verwendet.

Wenn Sie Windows Vista oder Windows 7 verwenden, haben Sie „netsh“ zu verwenden, was einfacher ist, als auch zu verwenden.

  • Lokale Benutzerkonto:

    netsh http add urlacl url=http://+:8001/ user=ComputerName\Username

  • Domain-Benutzerkonto:

    netsh http add urlacl url=http://+:8001/ user=DomainName\Username

  • Einbau-Netzwerkdienstkonto:

    netsh http add urlacl url=http://+:8001/ user="NT AUTHORITY\NETWORK SERVICE"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top