Bonjour,
J'ai un problème qui je pense doit etre simple mais je n'y trouve pas de solution.
j'ai fait un petit exemple d'application silverlight avec le site asp pour l'héberger.
donc mon application silverlight contient un simple bouton .Lors du clic sur ce bouton, voici la méthode appelé
et pour le retour :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ServiceReference3.Service1Client client = new ServiceReference3.Service1Client(); client.helloCompleted += new EventHandler<ServiceReference3.helloCompletedEventArgs>(Completed); client.helloAsync("World");
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void Completed(object sender, ServiceReference3.helloCompletedEventArgs e) { try { if (e.Error!= null) MessageBox.Show(e.Error.ToString()); MessageBox.Show(e.Result.ToString()); } catch (Exception EX) { MessageBox.Show(EX.Message + Environment.NewLine + EX.StackTrace); } }
ServiceReference3 fait référence a un web service qui est constitué d'une seul méthode très simple :
jusqu'ici tout va bien, je compile, je lance en debug... ça roule !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 [OperationContract] public string hello(string nom) { return "hello " + nom; }
Le problème arrive après le déploiement sur un autre poste.
l'application fonctionne correctement, j'ai bien mon bouton qui est affiché. appel a la méthode du web service fonctionne aussi.
par contre, le retour ne fonctionne pas. je m'explique :
le EventHandler sur la fonction "Completed" est bien appelé.
e.Error n'est pas null : il y a bien eu une erreur mais impossible de savoir ce que c'est vraiment et comment corriger le problème.
je pense que le web service n'a pas ete trouvé en faite.
Petite information qui peut peut etre servir : le web service, le site et l'application sont dans le même répertoire virtuel d'IIS.
e.error :
et l'exception qui est levé ensuite :
je precise que j'ai mis a la racine du site ces 2 fichiers :
ClientAccessPolicy.xml
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from http-request-headers="*"> <domain uri="*"/> </allow-from> <grant-to> <resource path="/" include-subpaths="true"/> </grant-to> </policy> </cross-domain-access> </access-policy>
crossdomain.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-http-request-headers-from domain="*" headers="*"/> </cross-domain-policy>
un grand merci d'avance !
Mickael
Partager