Ich möchte einen WCF-Dienst entwickeln, der mehrere Verträge unterstützt. Ich habe es geschafft, dies zu tun, indem ich die Anweisung von post auf Stackoverflow befolge.Mehrere Verträge in einem Dienst können auf dem Client mit WCF Discovery nicht erkannt werden
Im Grunde erstellen Sie einen Dienst (FooBarService), um mehrere Verträge (IFooService, IBarService) zu implementieren.
string serviceAddress = "net.tcp://localhost:8088/FooBarService";
ServiceHost selfServiceHost = new ServiceHost(typeof(FooBarService));
// The endpoints need to share this binding.
var binding = new NetTcpBinding();
selfServiceHost.AddServiceEndpoint(typeof(IFooService), binding, serviceAddress);
selfServiceHost.AddServiceEndpoint(typeof(IBarService), binding, serviceAddress);
Aber die herausfordernde Sache ist, dass ich mag auch auffindbar mit WCF Entdeckung, um diesen Service Client und Service von Endpunkt zu entkoppeln Bindung.
In der Service-Seite, ich habe so etwas wie dies:
var discoveryBehavior = new ServiceDiscoveryBehavior();
discoveryBehavior.AnnouncementEndpoints.Add(new AnnouncementEndpoint(new NetTcpBinding(SecurityMode.None), new EndpointAddress("net.tcp://localhost:8001/Announcement")));
_serviceHost.Description.Behaviors.Add(discoveryBehavior);
_serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint());
Es scheint, dass der Dienst arbeiten.
Aber auf einem der Client, die nur Vertrag IFooService verwenden möchten, bekam ich immer den folgenden Fehler, wenn ich versuche, es zu entdecken.
Der Endpunkt für contract.IFooService kann nicht gefunden werden. Entweder ist kein Service vorhanden oder die Erkennung wird nicht unterstützt.
Glauben Sie, dass es in diesem Fall möglich ist, in einem Dienst erkennbare Mehrfachverträge zu erzielen?
Wenn JA, wie kann ich das tun, basierend auf dem Code, den ich gerade habe ?.
Danke.