Gewusst wie: Hosten und Ausführen eines grundlegenden Windows Communication Foundation-DienstsHow to: Host and Run a Basic Windows Communication Foundation Service

Dies ist die dritte von sechs Aufgaben, die zum Erstellen einer grundlegenden Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Anwendung erforderlich sind.This is the third of six tasks required to create a Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) application. Einen Überblick über alle sechs Aufgaben finden Sie unter der Lernprogramm für erste Schritte Thema.For an overview of all six of the tasks, see the Getting Started Tutorial topic.

In diesem Thema wird beschrieben, wie ein Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Dienst in einer Konsolenanwendung gehostet wird.This topic describes how to host a Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) service in a console application. Dieses Verfahren umfasst die folgenden Schritte:This procedure consists of the following steps:

  • Erstellen eines Konsolenanwendungsprojekts zum Hosten des DienstsCreate a console application project to host the service.

  • Erstellen eines Diensthosts für den DienstCreate a service host for the service.

  • Aktivieren des MetadatenaustauschsEnable metadata exchange.

  • Öffnen des DiensthostsOpen the service host.

Eine vollständige Liste des für diese Aufgabe geschriebenen Codes wird in einem Beispiel im Anschluss an das Verfahren bereitgestellt.A complete listing of the code written in this task is provided in the example following the procedure.

So erstellen Sie eine neue Konsolenanwendung zum Hosten des DienstsTo create a new console application to host the service

  1. Erstellen Sie ein neues Konsolenanwendungsprojekt mit der rechten Maustaste auf die erste Schritte-Projektmappe, wenn Sie auswählen, hinzufügen, neues Projekt.Create a new Console Application project by right-clicking on the Getting Started solution, selecting, Add, New Project. In der neues Projekt hinzufügen -Dialogfeld auf der linken Seite der Dialogfeld Select Windows unter c# oder VB.In the Add New Project dialog on the left hand side of the dialog select Windows under C# or VB. Wählen Sie im mittleren Abschnitt des Dialogfelds Konsolenanwendung.In the center section of the dialog select Console Application. Nennen Sie das Projekt GettingStartedHost.Name the project GettingStartedHost.

  2. Legen Sie das Zielframework des GettingStartedHost-Projekts auf .NET Framework 4.5 per Rechtsklick auf "gettingstartedhost" im Projektmappen-Explorer auswählen und Eigenschaften.Set the target framework of the GettingStartedHost project to .NET Framework 4.5 by right clicking on GettingStartedHost in the Solution Explorer and selecting Properties. Im Dropdownfeld mit der Bezeichnung Zielframework wählen .NET Framework 4.5.In the dropdown box labeled Target Framework select .NET Framework 4.5. Festlegen des Zielframeworks für ein VB-Projekt weicht etwas im Eigenschaftendialogfeld GettingStartedHost-Projekts klicken Sie auf die Kompilieren Registerkarte auf der linken Seite des Bildschirms, und klicken Sie dann auf die erweiterte kompilieren Optionen Schaltfläche auf der unteren linken Ecke des Dialogfelds.Setting the target framework for a VB project is a little different, in the GettingStartedHost project properties dialog, click the Compile tab on the left-hand side of the screen, and then click the Advanced Compile Options button at the lower left-hand corner of the dialog. Wählen Sie dann .NET Framework 4.5 im Dropdownfeld mit der Bezeichnung Zielframework.Then select .NET Framework 4.5 in the dropdown box labeled Target Framework.

    Festlegen des Zielframeworks führt dazu, dass Visual Studio 2012Visual Studio 2012 um die Projektmappe erneut zu laden, drücken Sie die OK Aufforderung.Setting the target framework will cause Visual Studio 2012Visual Studio 2012 to reload the solution, press OK when prompted.

  3. GettingStartedHost-Projekts einen Verweis auf das GettingStartedLib-Projekt hinzugefügt, indem Sie mit der mit der rechten Maustaste auf die Verweise Ordner unter dem GettingStartedHost-Projekt im Projektmappen-Explorer und wählen Verweis hinzufügen .Add a reference to the GettingStartedLib project to the GettingStartedHost project by right clicking on the References folder under the GettingStartedHost project in the solution explorer and select Add Reference. In der Verweis hinzufügen wählen Sie im Dialogfeld Lösung auf der linken Seite des Dialogfeld und wählen GettingStartedLib im mittleren Abschnitt des Dialogfeld und klicken Sie auf hinzufügen.In the Add Reference dialog, select Solution on the left-hand side of the dialog and select GettingStartedLib in the center section of the dialog and click Add. Dadurch werden die in GettingStartedLib definierten Typen für das GettingStartedHost-Projekt verfügbar.This makes the types defined in GettingStartedLib available to the GettingStartedHost project.

  4. Fügen Sie einen Verweis auf System.ServiceModel dem GettingStartedHost-Projekt, indem Sie mit der rechten Maustaste die Verweis Ordner unter dem GettingStartedHost-Projekt im Projektmappen-Explorer und wählen hinzufügen Verweis.Add a reference to System.ServiceModel to the GettingStartedHost project by right-clicking the Reference folder under the GettingStartedHost project in Solution Explorer and select Add Reference. In der Verweis hinzufügen Dialogfeld wählen Framework auf der linken Seite des Dialogfelds.In the Add Reference dialog select Framework on the left-hand side of the dialog. Geben Sie im Textfeld Assemblys suchenSystem.ServiceModel ein.In the Search Assemblies textbox, type in System.ServiceModel. Wählen Sie im mittleren Abschnitt des Dialogfelds System.ServiceModel, klicken Sie auf die hinzufügen aus, und klicken Sie auf die schließen Schaltfläche.In the center section of the dialog select System.ServiceModel, click the Add button, and click the Close button. Speichern Sie die Projektmappe, indem Sie unterhalb des Hauptmenüs auf die Schaltfläche Alle speichern klicken.Save the solution by clicking the Save All button below the main menu.

So hosten Sie den DienstTo host the service

  • Öffnen Sie die Datei Program.cs oder Module.vb, und geben Sie den folgenden Code ein:Open the Program.cs or Module.vb file and enter the following code:

    // program.cs  
    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
    using System.ServiceModel;  
    using GettingStartedLib;  
    using System.ServiceModel.Description;   
    
    namespace GettingStartedHost  
    {  
        class Program  
        {  
            static void Main(string[] args)  
            {  
                // Step 1 Create a URI to serve as the base address.  
                Uri baseAddress = new Uri("http://localhost:8000/GettingStarted/");  
    
                // Step 2 Create a ServiceHost instance  
                ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);  
    
                try  
                {  
                    // Step 3 Add a service endpoint.  
                    selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");  
    
                    // Step 4 Enable metadata exchange.  
                    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();  
                    smb.HttpGetEnabled = true;  
                    selfHost.Description.Behaviors.Add(smb);  
    
                    // Step 5 Start the service.  
                    selfHost.Open();  
                    Console.WriteLine("The service is ready.");  
                    Console.WriteLine("Press <ENTER> to terminate service.");  
                    Console.WriteLine();  
                    Console.ReadLine();  
    
                    // Close the ServiceHostBase to shutdown the service.  
                    selfHost.Close();  
                }  
                catch (CommunicationException ce)  
                {  
                    Console.WriteLine("An exception occurred: {0}", ce.Message);  
                    selfHost.Abort();  
                }  
            }  
        }  
    }  
    
    'Module1.vb  
    Imports System  
    Imports System.ServiceModel  
    Imports System.ServiceModel.Description  
    Imports GettingStartedLibVB.GettingStartedLib  
    
    Module Service  
    
        Class Program  
            Shared Sub Main()  
                ' Step 1 Create a URI to serve as the base address  
                Dim baseAddress As New Uri("http://localhost:8000/ServiceModelSamples/Service")  
    
                ' Step 2 Create a ServiceHost instance  
                Dim selfHost As New ServiceHost(GetType(CalculatorService), baseAddress)  
                Try  
    
                    ' Step 3 Add a service endpoint  
                    ' Add a service endpoint  
                    selfHost.AddServiceEndpoint( _  
                        GetType(ICalculator), _  
                        New WSHttpBinding(), _  
                        "CalculatorService")  
    
                    ' Step 4 Enable metadata exchange.  
                    Dim smb As New ServiceMetadataBehavior()  
                    smb.HttpGetEnabled = True  
                    selfHost.Description.Behaviors.Add(smb)  
    
                    ' Step 5 Start the service  
                    selfHost.Open()  
                    Console.WriteLine("The service is ready.")  
                    Console.WriteLine("Press <ENTER> to terminate service.")  
                    Console.WriteLine()  
                    Console.ReadLine()  
    
                    ' Close the ServiceHostBase to shutdown the service.  
                    selfHost.Close()  
                Catch ce As CommunicationException  
                    Console.WriteLine("An exception occurred: {0}", ce.Message)  
                    selfHost.Abort()  
                End Try  
            End Sub  
        End Class  
    
    End Module  
    
    1. Schritt 1: Erstellt eine Instanz der URI-Klasse, die die Basisadresse des Diensts enthält.Step 1 - Creates an instance of the Uri class to hold the base address of the service. Dienste werden über eine URL identifiziert, die eine Basisadresse und einen optionalen URI enthält.Services are identified by a URL which contains a base address and an optional URI. Die Basisadresse weist das folgende Format: [transport] :// [-Computernamen oder die Domäne] [: optionale # port] / [optionale URI-Segment] die Basisadresse für den rechnerdienst verwendet den HTTP-Transport, "localhost", Port 8000 und der URI-segment "Erste Schritte"The base address is formatted as follows:[transport]://[machine-name or domain][:optional port #]/[optional URI segment]The base address for the calculator service uses the HTTP transport, localhost, port 8000, and the URI segment "GettingStarted"

    2. Schritt 2: Erstellt eine Instanz der ServiceHost-Klasse zum Hosten des Diensts.Step 2 – Creates an instance of the ServiceHost class to host the service. Der Konstruktor akzeptiert zwei Parameter: den Typ der Klasse, die den Dienstvertrag implementiert, und die Basisadresse des Diensts.The constructor takes two parameters, the type of the class that implements the service contract, and the base address of the service.

    3. Schritt 3: erstellt eine System.ServiceModel.ServiceEndpoint Instanz.Step 3 – Creates a System.ServiceModel.ServiceEndpoint instance. Ein Dienstendpunkt setzt sich aus einer Adresse, einer Bindung und einem Dienstvertrag zusammen.A service endpoint is composed of an address, a binding, and a service contract. Die System.ServiceModel.ServiceEndpoint Konstruktor akzeptiert daher den Schnittstellentyp des Dienstvertrags, einer Bindung und eine Adresse.The System.ServiceModel.ServiceEndpoint constructor therefore takes the service contract interface type, a binding, and an address. Der Dienstvertrag ist ICalculator, den Sie definiert haben und im Diensttyp implementieren.The service contract is ICalculator, which you defined and implement in the service type. Die in diesem Beispiel verwendete Bindung ist WSHttpBinding. Dies ist eine integrierte Bindung, die für die Verbindung mit Endpunkten verwendet wird, die den WS--Spezifikationen entsprechen.The binding used in this sample is WSHttpBinding which is a built-in binding that is used for connecting to endpoints that conform to the WS- specifications. Weitere Informationen zu WCF-Bindungen, finden Sie unter WCF-Bindungsübersicht.For more information about WCF bindings, see WCF Bindings Overview. Die Adresse wird an die Basisadresse angefügt, um den Endpunkt zu identifizieren.The address is appended to the base address to identify the endpoint. In diesem Code die angegebene Adresse ist "CalculatorService" aus, damit die vollqualifizierte Adresse für den Endpunkt ist "http://localhost:8000/GettingStarted/CalculatorService" Hinzufügen eines Dienstendpunkts ist optional, wenn mithilfe von .NET Framework 4.0 oder höher.The address specified in this code is "CalculatorService" so the fully qualified address for the endpoint is "http://localhost:8000/GettingStarted/CalculatorService" Adding a service endpoint is optional when using .NET Framework 4.0 or later. Wenn im Code oder in der Konfiguration keine Endpunkte hinzugefügt wurden, fügt WCF in diesen Versionen einen Standardendpunkt für jede Kombination aus Basisadresse und Vertrag hinzu, die vom Dienst implementiert wurden.In these versions, if no endpoints are added in code or configuration, WCF adds one default endpoint for each combination of base address and contract implemented by the service. Weitere Informationen zu Endpunkten finden Sie unter angeben einer Endpunktadresse.For more information about default endpoints see Specifying an Endpoint Address. Weitere Informationen finden Sie unterFor more information about zu Standardendpunkten, Bindungen und Verhaltensweisen finden Sie unter Simplified Configuration und Simplified Configuration for WCF Services. default endpoints, bindings, and behaviors, see Simplified Configuration and Simplified Configuration for WCF Services.

      Wichtig

      Das Hinzufügen eines Dienstendpunkts ist optional, wenn .NET Framework 4 oder höher verwendet wird.Adding a service endpoint is optional when using .NET Framework 4 or later. Wenn im Code oder in der Konfiguration keine Endpunkte hinzugefügt wurden, fügt WCF in diesen Versionen einen Standardendpunkt für jede Kombination aus Basisadresse und Vertrag hinzu, die vom Dienst implementiert wurden.In these versions, if no endpoints are added in code or configuration, WCF adds one default endpoint for each combination of base address and contract implemented by the service. Weitere Informationen zu Endpunkten finden Sie unter angeben einer Endpunktadresse.For more information about default endpoints see Specifying an Endpoint Address. Weitere Informationen finden Sie unterFor more information about zu Standardendpunkten, Bindungen und Verhaltensweisen finden Sie unter Simplified Configuration und Simplified Configuration for WCF Services. default endpoints, bindings, and behaviors, see Simplified Configuration and Simplified Configuration for WCF Services.

    4. Schritt 4: Aktiviert den Metadatenaustausch.Step 4 – Enable metadata exchange. Clients verwenden den Metadatenaustausch, um Proxys zu generieren, die zum Aufrufen von Dienstvorgängen verwendet werden.Clients will use metadata exchange to generate proxies that will be used to call the service operations. Zum Aktivieren von Metadatenaustausch erstellen eine ServiceMetadataBehavior Instanz, legen Sie es des HttpGetEnabled Eigenschaft true, und Hinzufügen des Verhaltens zur der System.ServiceModel.ServiceHost.Behaviors%2A Auflistung von der ServiceHost Instanz.To enable metadata exchange create a ServiceMetadataBehavior instance, set it’s HttpGetEnabled property to true, and add the behavior to the System.ServiceModel.ServiceHost.Behaviors%2A collection of the ServiceHost instance.

    5. Schritt 5: Öffnet den ServiceHost, um auf eingehende Nachrichten zu lauschen.Step 5 – Open the ServiceHost to listen for incoming messages. Der Code wartet darauf, dass der Benutzer die EINGABETASTE drückt.Notice the code waits for the user to hit enter. Wenn dies nicht erfolgt, wird die App sofort geschlossen und der Dienst heruntergefahren. Beachten Sie auch, dass ein try/catch-Block verwendet wird.If you do not do this, the app will close immediately and the service will shut down.Also notice a try/catch block used. Nachdem der ServiceHost instanziiert wurde, wird der gesamte sonstige Code in einen try/catch-Block eingefügt.After the ServiceHost has been instantiated, all other code is placed in a try/catch block. Weitere Informationen zu sicher ausgelöste Ausnahmen abfangen ServiceHost, finden Sie unter Vermeiden von Problemen mit der Using-AnweisungFor more information about safely catching exceptions thrown by ServiceHost, see Avoiding Problems with the Using Statement

So überprüfen Sie, ob der Dienst funktioniertTo verify the service is working

  1. Führen Sie in Visual Studio 2012Visual Studio 2012 die GettingStartedHost-Konsolenanwendung aus.Run the GettingStartedHost console application from inside Visual Studio 2012Visual Studio 2012. Beim Ausführen unter Windows VistaWindows Vista und höher muss der Dienst mit Administratorrechten ausgeführt werden.When running on Windows VistaWindows Vista and later operating systems, the service must be run with administrator privileges. Da Visual StudioVisual Studio mit Administratorrechten ausgeführt wurde, wird auch GettingStartedHost mit Administratorrechten ausgeführt.Because Visual StudioVisual Studio was run with Administrator privileges, GettingStartedHost is also run with Administrator privileges. Sie können auch eine neue Eingabeaufforderung mit Administratorrechten starten und "service.exe" damit ausführen.You can also start a new command prompt running it with Administrator privileges and run service.exe within it.

  2. Öffnen Sie Internet Explorer, und navigieren Sie unter http://localhost:8000/GettingStarted/CalculatorService zur Debuggingseite des Diensts.Open Internet Explorer and browse to the service's debug page at http://localhost:8000/GettingStarted/CalculatorService.

BeispielExample

Das folgende Beispiel enthält den Dienstvertrag und die Implementierung aus den vorangegangenen Schritten im Lernprogramm und hostet den Dienst in einer Konsolenanwendung.The following example includes the service contract and implementation from previous steps in the tutorial and hosts the service in a console application.

Um dies mit einem Befehlszeilen-Compiler kompilieren, kompilieren Sie "IService1.cs" und "Service1.cs" in einer Klasse Bibliothek verweisen auf System.ServiceModel.dll.To compile this with a command-line compiler, compile IService1.cs and Service1.cs into a class library referencing System.ServiceModel.dll. Und kompilieren Sie Program.cs in eine Konsolenanwendung.And compile Program.cs to a console application.

// IService1.cs  
using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Runtime.Serialization;  
using System.ServiceModel;  
using System.Text;  

namespace GettingStartedLib  
{  
        [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]  
        public interface ICalculator  
        {  
            [OperationContract]  
            double Add(double n1, double n2);  
            [OperationContract]  
            double Subtract(double n1, double n2);  
            [OperationContract]  
            double Multiply(double n1, double n2);  
            [OperationContract]  
            double Divide(double n1, double n2);  
        }  
}  
// Service1.cs  
using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Runtime.Serialization;  
using System.ServiceModel;  
using System.Text;  

namespace GettingStartedLib  
{  
    public class CalculatorService : ICalculator  
    {  
        public double Add(double n1, double n2)  
        {  
            double result = n1 + n2;  
            Console.WriteLine("Received Add({0},{1})", n1, n2);  
            // Code added to write output to the console window.  
            Console.WriteLine("Return: {0}", result);  
            return result;  
        }  

        public double Subtract(double n1, double n2)  
        {  
            double result = n1 - n2;  
            Console.WriteLine("Received Subtract({0},{1})", n1, n2);  
            Console.WriteLine("Return: {0}", result);  
            return result;  
        }  

        public double Multiply(double n1, double n2)  
        {  
            double result = n1 * n2;  
            Console.WriteLine("Received Multiply({0},{1})", n1, n2);  
            Console.WriteLine("Return: {0}", result);  
            return result;  
        }  

        public double Divide(double n1, double n2)  
        {  
            double result = n1 / n2;  
            Console.WriteLine("Received Divide({0},{1})", n1, n2);  
            Console.WriteLine("Return: {0}", result);  
            return result;  
        }  
    }  
}  
//Program.cs  
using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.ServiceModel;  
using GettingStartedLib;  
using System.ServiceModel.Description;   

namespace GettingStartedHost  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            // Step 1 of the address configuration procedure: Create a URI to serve as the base address.  
            Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/Service");  

            // Step 2 of the hosting procedure: Create ServiceHost  
            ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);  

            try  
            {  
                // Step 3 of the hosting procedure: Add a service endpoint.  
                selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");  

                // Step 4 of the hosting procedure: Enable metadata exchange.  
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();  
                smb.HttpGetEnabled = true;  
                selfHost.Description.Behaviors.Add(smb);  

                // Step 5 of the hosting procedure: Start (and then stop) the service.  
                selfHost.Open();  
                Console.WriteLine("The service is ready.");  
                Console.WriteLine("Press <ENTER> to terminate service.");  
                Console.WriteLine();  
                Console.ReadLine();  

                // Close the ServiceHostBase to shutdown the service.  
                selfHost.Close();  
            }  
            catch (CommunicationException ce)  
            {  
                Console.WriteLine("An exception occurred: {0}", ce.Message);  
                selfHost.Abort();  
            }  
        }  
    }  
}  
'IService1.vb  
Imports System  
Imports System.ServiceModel  

Namespace GettingStartedLib  

    <ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples")> _  
    Public Interface ICalculator  

        <OperationContract()> _  
        Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double  
        <OperationContract()> _  
        Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double  
        <OperationContract()> _  
        Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double  
        <OperationContract()> _  
        Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double  
    End Interface  
End Namespace  
'Service1.vb  
Imports System  
Imports System.ServiceModel  

Namespace GettingStartedLib  

    Public Class CalculatorService  
        Implements ICalculator  

        Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Add  
            Dim result As Double = n1 + n2  
            ' Code added to write output to the console window.  
            Console.WriteLine("Received Add({0},{1})", n1, n2)  
            Console.WriteLine("Return: {0}", result)  
            Return result  
        End Function  

        Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Subtract  
            Dim result As Double = n1 - n2  
            Console.WriteLine("Received Subtract({0},{1})", n1, n2)  
            Console.WriteLine("Return: {0}", result)  
            Return result  

        End Function  

        Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Multiply  
            Dim result As Double = n1 * n2  
            Console.WriteLine("Received Multiply({0},{1})", n1, n2)  
            Console.WriteLine("Return: {0}", result)  
            Return result  

        End Function  

        Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Divide  
            Dim result As Double = n1 / n2  
            Console.WriteLine("Received Divide({0},{1})", n1, n2)  
            Console.WriteLine("Return: {0}", result)  
            Return result  

        End Function  
    End Class  
End Namespace  
'Module1.vb  
Imports System  
Imports System.ServiceModel  
Imports System.ServiceModel.Description  
Imports GettingStartedLibVB.GettingStartedLib  

Module Service  

    Class Program  
        Shared Sub Main()  
            ' Step 1 of the address configuration procedure: Create a URI to serve as the base address.  
            Dim baseAddress As New Uri("http://localhost:8000/ServiceModelSamples/Service")  

            ' Step 2 of the hosting procedure: Create ServiceHost  
            Dim selfHost As New ServiceHost(GetType(CalculatorService), baseAddress)  
            Try  

                ' Step 3 of the hosting procedure: Add a service endpoint.  
                ' Add a service endpoint  
                selfHost.AddServiceEndpoint( _  
                    GetType(ICalculator), _  
                    New WSHttpBinding(), _  
                    "CalculatorService")  

                ' Step 4 of the hosting procedure: Enable metadata exchange.  
                ' Enable metadata exchange  
                Dim smb As New ServiceMetadataBehavior()  
                smb.HttpGetEnabled = True  
                selfHost.Description.Behaviors.Add(smb)  

                ' Step 5 of the hosting procedure: Start (and then stop) the service.  
                selfHost.Open()  
                Console.WriteLine("The service is ready.")  
                Console.WriteLine("Press <ENTER> to terminate service.")  
                Console.WriteLine()  
                Console.ReadLine()  

                ' Close the ServiceHostBase to shutdown the service.  
                selfHost.Close()  
            Catch ce As CommunicationException  
                Console.WriteLine("An exception occurred: {0}", ce.Message)  
                selfHost.Abort()  
            End Try  
        End Sub  
    End Class  

End Module  

Hinweis

Dienste wie dieser müssen dazu berechtigt sein, HTTP-Adressen auf dem Computer zum Überwachen zu registrieren.Services such as this one require permission to register HTTP addresses on the machine for listening. Administratorkonten verfügen über diese Berechtigung, anderen Konten muss jedoch die Berechtigung für HTTP-Namespaces erteilt werden.Administrator accounts have this permission, but non-administrator accounts must be granted permission for HTTP namespaces. Weitere Informationen finden Sie unterFor more information aboutzum Konfigurieren von Namespacereservierungen finden Sie unter Configuring HTTP and HTTPS. how to configure namespace reservations, see Configuring HTTP and HTTPS. Wird der Dienst unter Visual StudioVisual Studio ausgeführt, muss "service.exe" über Administratorrechte verfügen.When running under Visual StudioVisual Studio, the service.exe must be run with administrator privileges.

Der Dienst wird nun ausgeführt.Now the service is running. Fahren Sie mit Vorgehensweise: Erstellen eines Clients.Proceed to How to: Create a Client. Informationen zur Problembehandlung finden Sie unter Problembehandlung für das Lernprogramm für erste Schritte.For troubleshooting information, see Troubleshooting the Getting Started Tutorial.

Siehe auchSee Also

Erste SchritteGetting Started
Selbst gehostete DiensteSelf-Host