Bonjour tout le monde
Le sujet de ce post ressemble à un sujet que j'ai vu de nombreuses fois sur le forum sans pour autant trouver une solution qui fonctionne pour moi...
J'ai développé un webservice en c#, et une des méthodes récupère 2 paramètres : une chaîne et un tableau de chaînes :
Code :
- [WebMethod]
- public void ExtraitCommandes(string applicatif, string[] files)
- {
- foreach (string file in files) Log(string.Format("file={0}",file));
- }
|
Pour l'exemple je me contente d'afficher les différentes chaînes envoyées en paramètre dans mon tableau, Log étant une méthode qui écrit dans un fichier de log.
Mon objectif est de faire appel à ce webservice à partir d'une page web (ajax). Je tiens à préciser que plusieurs autres méthodes de mon webservice fonctionnent parfaitement bien, mais ces méthodes ne nécessitent pas de tableau en paramètres...
Mon appel ajax de base :
Code :
- $.ajax({
- url: "https://monsite.com/MonWebservice.asmx/ExtraitCommandes",
- type: "post",
- data: {
- applicatif: currentApplicatif,
- files: uploadFiles
- },
- dataType: "json",
- success: function(response){
- console.log(response);
- },
- error: function(error){
- console.log(error);
- }
- });
|
uploadFiles est un tableau de chaînes ["chaine1","chaine2","chaine3"].
Maintenant le problème Impossible d'obtenir le résultat que je souhaite, à savoir extraire dans mon webservice les différentes chaînes du tableau envoyé !
Si j'utilise mon appel ajax tel que ci-dessus, mon webservice renvoi l'erreur suivante :
Citation :
System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
|
J'ai essayé d'utiliser un JSON.stringify() comme j'ai pu voir sur plusieurs sujets :
Code :
- data: JSON.stringify({
- applicatif: uploadAapplicatif,
- files: uploadData
- }),
|
Ce qui me renvoie l'erreur suivante :
Citation :
System.InvalidOperationException: Paramètre manquant : applicatif.
|
J'ai essayé de "stringifier" uniquement le paramètre "files" :
Code :
- data: {
- applicatif: uploadAapplicatif,
- files: JSON.stringify(uploadData)
- },
|
Mais mon webservice ne voit qu'une seule et unique chaîne, comme en témoigne la ligne dans mon fichier de logs :
Citation :
file=["machaine1","machaine2","machaine3"]
|
Du côté de mon webservice justement, j'ai essayé de changer le type du paramètre :
Code :
- public void ExtraitCommandes(string applicatif, List<string> files)
|
Mais là aussi, erreur :
Citation :
System.InvalidOperationException: Le nom de la méthode web Service ExtraitCommandes n'est pas valide.
|
Voilà où j'en suis... Est-ce que quelqu'un a une idée de l'endroit où j'ai bien pu me foirer... ?
Merci pour votre aide