J'ai un service WCF de découverte activé et maintenant je veux le connecter au client. Problème: Lorsque j'utilise le point de terminaison udp (1.) et que j'essaie de découvrir le service par programmation, cela fonctionne ... Lorsque j'utilise l'approche App.config (2.), ce n'est pas le cas (Erreur: Aucun point de terminaison découvert).WCF Discovery .NET 4: Problème avec la configuration config/programatically
Pour moi, il semble que le « résultat de découverte udp » des deux solutions devrait être la même, mais malheureusement ce n'est pas ...
1. approche Programmatically (travaux):
code:
DiscoveryClient discClient = new DiscoveryClient("udpDiscoveryEndpoint");
FindCriteria fCriteria = new FindCriteria(typeof(IAlarmServer));
fCriteria.Duration = TimeSpan.FromSeconds(5);
fCriteria.MaxResults = 1;
FindResponse fResponse = discClient.Find(fCriteria);
EndpointAddress address = fResponse.Endpoints[0].Address;
Console.WriteLine("Address found: " + address.ToString());
Config:
<system.serviceModel>
<client>
<endpoint name="udpDiscoveryEndpoint" kind="udpDiscoveryEndpoint" />
</client>
</system.serviceModel>
2. Approche avec App.config et "intégrée dans endpoint" approche (ne fonctionne pas!):
code:
var Proxy = new AlarmServerClient("IAlarmServer"); // Default client generated by Visual Studio
Proxy.SomeMethod(); // throw no endpoints discovered exception
Config:
<standardEndpoints>
<dynamicEndpoint>
<standardEndpoint name="discoveryDynamicEndpointConfiguration">
<discoveryClientSettings>
<findCriteria duration="00:00:05" maxResults="1">
<types>
<add name="AlarmServiceRef.IAlarmServer"/>
</types>
</findCriteria>
<endpoint kind="udpDiscoveryEndpoint"/>
</discoveryClientSettings>
</standardEndpoint>
</dynamicEndpoint>
</standardEndpoints>
Config:
<client>
<endpoint binding="basicHttpBinding" bindingConfiguration="DefaultBasicHttpBinding" contract="AlarmServiceRef.IAlarmServer" name="IAlarmServer"
kind="dynamicEndpoint"
endpointConfiguration="discoveryDynamicEndpointConfiguration"/>
</client>
Des idées pour lesquelles cela se passe? Vous ne pouvez pas simplement ajouter une référence de service à votre projet client?
personne? = (((((( – David
Ce type est-il fort nommé? –
x0n