Vorgehensweise: Konfigurieren eines Windows Communication Foundation-Diensts für die Verwendung der Portfreigabe

Die einfachste Möglichkeit, die Net.tcp://-Portfreigabe in Ihrer Windows Communication Foundation (WCF)-Anwendung zu verwenden, besteht darin, mit dem NetTcpBinding einen Dienst bereitzustellen.

Diese Bindung stellt eine PortSharingEnabled Eigenschaft bereit, die steuert, ob die Net.tcp://-Portfreigabe für den Dienst aktiviert ist, der mit dieser Bindung konfiguriert wird.

Das folgende Verfahren zeigt, wie Sie mithilfe der NetTcpBinding Klasse einen Endpunkt am URI (Uniform Resource Identifier) net.tcp://localhost/MyService öffnen, zuerst im Code und dann mithilfe von Konfigurationselementen.

So aktivieren Sie die Net.tcp://-Portfreigabe in einem NetTcpBinding im Code

  1. Erstellen Sie einen Dienst zur Implementierung eines Vertrags namens IMyService und nennen Sie ihn MyService.

    [ServiceContract]
    interface IMyService
    {
    
       //Define the contract operations.
    }
    
    class MyService : IMyService
    {
    
    //Implement the IMyService operations.
    }
    
    <ServiceContract()> _
    Friend Interface IMyService
    
        'Define the contract operations.
    
    End Interface
    
    Friend Class MyService
        Implements IMyService
    
        'Implement the IMyService operations.
    
    End Class
    
  2. Erstellen Sie eine Instanz der NetTcpBinding Klasse, und legen Sie die PortSharingEnabled Eigenschaft auf true.

    NetTcpBinding portsharingBinding = new NetTcpBinding();
    portsharingBinding.PortSharingEnabled = true;
    
    Dim portsharingBinding As New NetTcpBinding()
    portsharingBinding.PortSharingEnabled = True
    
  3. Erstellen Sie ein ServiceHost und fügen Sie den Dienstendpunkt für MyService hinzu, der die Portfreigabe verwendet und unter der Endpunktadresse URI "net.tcp://localhost/MyService" überwacht.

    ServiceHost host = new ServiceHost( typeof( MyService ) );
    host.AddServiceEndpoint( typeof( IMyService ), portsharingBinding,"net.tcp://localhost/MyService" );
    
    
    Dim host As New ServiceHost(GetType(MyService))
    host.AddServiceEndpoint(GetType(IMyService), portsharingBinding, "net.tcp://localhost/MyService")
    

    Hinweis

    In diesem Beispiel wird der standardmäßige TCP-Port von 808 verwendet, da der Endpunktadressen-URI keine andere Portnummer angibt. Da die Portfreigabe für die Transportbindung explizit aktiviert ist, kann dieser Dienst Port 808 für andere Dienste in anderen Prozessen freigeben. Wenn die Portfreigabe nicht zulässig war und eine andere Anwendung bereits Port 808 verwendet hat, würde dieser Dienst beim Öffnen einen AddressAlreadyInUseException Fehler auslösen.

So aktivieren Sie die Net.tcp://-Portfreigabe für ein NetTcpBinding in der Konfiguration

  1. Das folgende Beispiel zeigt, wie Sie die Portfreigabe aktivieren und den Dienstendpunkt mithilfe von Konfigurationselementen hinzufügen.
<system.serviceModel>
  <bindings>
    <netTcpBinding name="portSharingBinding"
                   portSharingEnabled="true" />
  </bindings>
  <services>
    <service name="MyService">
        <endpoint address="net.tcp://localhost/MyService"
                  binding="netTcpBinding"
                  contract="IMyService"
                  bindingConfiguration="portSharingBinding" />
    </service>
  </services>
</system.serviceModel>

Siehe auch