Gewusst wie: Hosten und Ausführen eines grundlegenden Windows Communication Foundation-Diensts

Dies ist die dritte von sechs Aufgaben, die zum Erstellen eines grundlegenden Windows Communication Foundation (WCF)-Diensts und eines Clients, der den Dienst aufrufen kann, erforderlich sind. Eine Übersicht über alle sechs Aufgaben finden Sie im Thema Lernprogramm "Erste Schritte".

In diesem Thema wird beschrieben, wie ein grundlegender Windows Communication Foundation (WCF)-Dienst ausgeführt wird. Dieses Verfahren umfasst die folgenden Schritte:

  • Erstellen einer Basisadresse für den Dienst
  • Erstellen eines Diensthosts für den Dienst
  • Aktivieren des Metadatenaustauschs
  • Öffnen des Diensthosts

Eine vollständige Liste des für diese Aufgabe geschriebenen Codes wird in einem Beispiel im Anschluss an das Verfahren bereitgestellt. Fügen Sie den folgenden Code in die Main()-Methode ein, die in der Program-Klasse definiert wird. Diese Klasse wurde beim Erstellen der Service-Projektmappe generiert.

So konfigurieren Sie eine Basisadresse für den Dienst

  1. Erstellen Sie eine Uri-Instanz für die Basisadresse des Diensts. Dieser URI gibt das HTTP-Schema, Ihren lokalen Computer, Anschlussnummer 8000 und den Pfad ServiceModelSample/Service zu dem Dienst an, der für den Namespace des Diensts im Dienstvertrag festgelegt wurde.

So hosten Sie den Dienst

  1. Importieren Sie den System.ServiceModel.Description-Namespace. Diese Codezeile muss zusammen mit dem Rest der using- oder imports-Anweisungen am Anfang der Datei "Program.cs"/"Program.vb" platziert werden.

  2. Erstellen Sie eine neue ServiceHost-Instanz, die als Host für den Dienst fungieren soll. Sie müssen den Typ angeben, der den Dienstvertrag und die Basisadresse implementiert. In diesem Beispiel wird die Basisadresse https://localhost:8000/ServiceModelSamples/Service verwendet. CalculatorService ist der Typ, der den Dienstvertrag implementiert.

  3. Fügen Sie eine try-catch-Anweisung ein, die eine CommunicationException abfängt, und fügen Sie in den try-Block den Code der nächsten drei Schritte ein. Durch die catch-Klausel sollte eine Fehlermeldung angezeigt und anschließend selfHost.Abort() aufgerufen werden.

  4. Fügen Sie einen Endpunkt hinzu, der den Dienst verfügbar macht. Dazu müssen Sie den Vertrag, den der Endpunkt verfügbar macht, eine Bindung und die Adresse für den Endpunkt angeben. Geben Sie in diesem Beispiel ICalculator als Vertrag, WSHttpBinding als Bindung und CalculatorService als Adresse an. Beachten Sie hierbei, dass die Endpunktadresse eine relative Adresse ist. Die vollständige Adresse des Endpunkts besteht aus der Basisadresse und der Endpunktadresse. In diesem Fall lautet die vollständige Adresse https://localhost:8000/ServiceModelSamples/Service/CalculatorService.

  5. Aktivieren Sie den Metadatenaustausch. Fügen Sie zu diesem Zweck ein Dienstmetadatenverhalten hinzu. Erstellen Sie zunächst eine ServiceMetadataBehavior-Instanz, legen Sie die HttpGetEnabled-Eigenschaft auf true fest, und fügen Sie dem Dienst anschließend das neue Verhalten hinzu. Weitere Informationen zu Sicherheitsproblemen beim Veröffentlichen von Metadaten finden Sie unter Sicherheitsüberlegungen für Metadaten.

  6. Öffnen Sie den ServiceHost, und warten Sie eingehende Nachrichten. Schließen Sie den ServiceHost, wenn der Benutzer die Eingabetaste drückt.

So überprüfen Sie, ob der Dienst funktioniert

  1. Führen Sie "service.exe" innerhalb von Visual Studio aus. Wird der Dienst unter Windows Vista ausgeführt, muss der Dienst über Administratorrechte verfügen. Da Visual Studio mit Administratorrechten ausgeführt wurde, wird auch "service.exe" mit Administratorrechten ausgeführt. Sie können auch eine neue Eingabeaufforderung mit Administratorrechten starten und "service.exe" damit ausführen.

  2. Öffnen Sie Internet Explorer, und navigieren Sie unter "https://localhost:8000/ServiceModelSamples/Service" zur Debuggingseite des Diensts.

Beispiel

Das folgende Beispiel enthält den Dienstvertrag und die Implementierung aus den vorangegangenen Schritten im Lernprogramm und hostet den Dienst in einer Konsolenanwendung. Kompilieren Sie folgenden Code in eine ausführbare Datei mit dem Namen Service.exe.

Vergessen Sie nicht, beim Kompilieren des Codes auf System.ServiceModel.dll zu verweisen.

Tipp

Dienste wie dieser müssen dazu berechtigt sein, HTTP-Adressen auf dem Computer zum Überwachen zu registrieren. Administratorkonten verfügen über diese Berechtigung, anderen Konten muss diese Berechtigung für HTTP-Namespaces gewährt werden. Weitere Informationen dazu, wie Namespacereservierungen konfiguriert werden, finden Sie unter Konfigurieren von HTTP und HTTPS. Wird der Dienst unter Visual Studio ausgeführt, muss "service.exe" über Administratorrechte verfügen.

Der Dienst wird nun ausgeführt. Fahren Sie mit Gewusst wie: Erstellen eines Windows Communication Foundation-Clients fort. Informationen zur Problembehandlung finden Sie unter Problembehandlung für das Lernprogramm "Erste Schritte".

Siehe auch

Weitere Ressourcen

Getting Started Sample
Self-Host