Verwenden einer benutzerdefinierten Bindung mit dem Suchclientchannel
Wenn Sie eine benutzerdefinierte Bindung mit DiscoveryClientBindingElement verwenden, müssen Sie ein DiscoveryEndpointProvider-Objekt definieren, das DiscoveryEndpoint-Instanzen erstellt.
Erstellen eines DiscoveryEndpointProvider-Objekts
Der DiscoveryEndpointProvider ist für die Erstellung von DiscoveryEndpoint-Instanzen bei Bedarf zuständig. Um einen Suchendpunktanbieter zu definieren, leiten Sie eine Klasse von DiscoveryEndpointProvider ab, überschreiben die GetDiscoveryEndpoint-Methode und geben einen neuen Suchendpunkt zurück. Das folgende Beispiel zeigt, wie Sie einen Suchendpunktanbieter erstellen.
// Extend DiscoveryEndpointProvider class to change the default DiscoveryEndpoint
// to the DiscoveryClientBindingElement. The Discovery ClientChannel
// uses this endpoint to send Probe message.
public class UdpDiscoveryEndpointProvider : DiscoveryEndpointProvider
{
public override DiscoveryEndpoint GetDiscoveryEndpoint()
{
return new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005);
}
}
Sobald Sie den Suchendpunktanbieter definiert haben, können Sie eine benutzerdefinierte Bindung erstellen und das DiscoveryClientBindingElement hinzufügen, das auf den Suchendpunktanbieter verweist. Dies wird im folgenden Beispiel veranschaulicht.
DiscoveryClientBindingElement discoveryBindingElement = new DiscoveryClientBindingElement();
// Provide the search criteria and the endpoint over which the probe is sent.
discoveryBindingElement.FindCriteria = new FindCriteria(typeof(ICalculatorService));
discoveryBindingElement.DiscoveryEndpointProvider = new UdpDiscoveryEndpointProvider();
CustomBinding customBinding = new CustomBinding(new NetTcpBinding());
// Insert DiscoveryClientBindingElement at the top of the BindingElement stack.
// An exception is thrown if this binding element is not at the top.
customBinding.Elements.Insert(0, discoveryBindingElement);
Weitere Informationen zur Verwendung des Ermittlungsclientkanals finden Sie unter Verwenden des Ermittlungsclientkanals.