J'essaie d'appeler un webservice WCF (que j'ai développé) à partir d'une application Silverlight. Pour une raison quelconque, l'application Silverlight n'effectue pas l'appel http soap vers le service. Je le sais parce que je renifle tout le trafic http avec Fiddler (et ce n'est pas un appel local).
C'est ma configuration dans le serveur pertinent à WCF :
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service behaviorConfiguration="ServiceBehavior" name="Service">
<endpoint address="" binding="basicHttpBinding" contract="Service"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
Et le fichier ServiceReferences.ClientConfig dans l'application Silverlight (j'utilise la version bêta 2) :
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_Service" maxBufferSize="65536"
maxReceivedMessageSize="65536">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://itlabws2003/Service.svc" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_Service" contract="Silverlight_organigram.DataService.Service"
name="BasicHttpBinding_Service" />
</client>
</system.serviceModel>
Il s'agit de la méthode silverlight qui appelle le service, j'ai collé toute la méthode pour plus de commodité, le lambda est pour rendre l'appel synchrone, je l'ai débogué et après la ligne client.GetPersonsAsync(), Fiddler ne montre aucun message voyageant vers le serveur.
public static List<Person> GetPersonsFromDatabase()
{
List<Person> persons = new List<Person>();
ServiceClient client = new ServiceClient();
ManualResetEvent eventGetPersons = new ManualResetEvent(false);
client.GetPersonsCompleted += new EventHandler<GetPersonsCompletedEventArgs>(delegate(object sender, GetPersonsCompletedEventArgs e)
{
foreach (DTOperson dtoPerson in e.Result)
{
persons.Add(loadFromDto(dtoPerson));
}
eventGetPersons.Set();
});
client.GetPersonsAsync();
eventGetPersons.WaitOne();
return persons;
}
Quelqu'un a-t-il une idée de la façon dont je pourrais résoudre ce problème ?