Bonjour,
Je suis désolé si cette question a déjà été posé, mais je bloque depuis plusieurs jours et malgré mes recherches, la réponse ne m'a pas sauté aux yeux (je suis nouveau à propos de IIS et ASP.net, je connais mieux apache/php)
Je suis en train de tester un site en mutualisé Windows chez OVH (cette offre .NET Framework:4.0 ASP.NET:4.0)
J'ai écrit en C# un petit webservice de test (asmx), le classique Add(a,b) qui renvoi la somme. J'interroge mon webservice depuis une appli cliente en C# sur mon PC et tout fonctionne à merveille en SOAP.
Maintenant je veux tester la même chose en JSON. Et la, ça fonctionne moins bien. Après beaucoup de recherches j'ai obtenu quelques améliorations, mais je n'arrive à faire fonctionner le webservice qu'en JavaScript depuis une page hébergée sur le même serveur.
Code C# du webservice ASP.net :
Code HTML/JavaScript qui fonctionne sur le site mais pas depuis mon PC ni un autre site web :
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 <%@ WebService Language="C#" class="MyWebServiceJSON" %> using System.Web.Services; using System.Web.Script.Services; [WebService(Namespace="http://acidislands.com/betatest_webservice/")] [ScriptService] public class MyWebServiceJSON { [WebMethod(Description = "Add(a,b) return a + b")] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public int Add( int a, int b) { return a + b ; } }
J'ai l'impression qu'il y a quelque chose à faire du coté du web.config pour autoriser l'appel du webservice depuis l'extérieur, mais je ne trouve pas la solution.
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>test_json_jquery</title> <script type="text/javascript" src="jquery-1.7.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $('#dyn_content').html('in progress...'); a = Math.round(Math.random() * 10); b = Math.round(Math.random() * 10); $.ajax( { type: "POST", url: "http://acidislands.com/betatest_webservice/MyWebServiceJSON.asmx/Add", data: "{'a':'"+a+"','b':'"+b+"'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { console.log('success'); // Insert the returned HTML into the <div>. $('#dyn_content').html("Add("+a+","+b+") = "+msg.d); }, error: function(jqXHR, textStatus, errorThrown) { $('#dyn_content').html('error : ', textStatus); console.log('error : ', textStatus); }, complete: function(jqXHR, textStatus) { console.log('complete : ', textStatus); } }); }); </script> </head> <body> Test JSON jQuery<br/> <br/> <div id="dyn_content"> ... </div> </body> </html>
J'ai testé ça, mais sans succès :
Pour info, en JavaScript, même avec FireBug je ne sais pas trop ce que répond le webservice quand ça ne marche pas. Par contre avec mon application en C# si j’essaie d'envoyer ma requête en JSON, je reçois en résultat une string qui contient une page web avec en titre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <!-- Fichier de configuration Web.Config --> <configuration> <system.web> <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory" validate="false"/> </httpHandlers> </system.web> </configuration>C'est la même page web que celle qui s'affiche quand on affiche l'URL suivante avec son navigateur :Le format demandé n'est pas reconnu pour l'URL se terminant par '/Add'.
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part http://acidislands.com/betatest_webservice/MyWebServiceJSON.asmx/Add
Partager