Passer un objet en paramètre dans une webmethod (service web)

Signaler
Messages postés
6
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
21 avril 2009
-
Messages postés
6
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
21 avril 2009
-
Bonjour à tous,

je m'arrache les cheveux pour faire passer un objet dans les paramètres d'une méthode de mon service web!

Mon objet est constitué de 3 classes. Lorsque je le sérialise, il n'y a aucun problème, j'obtiens bien un fichier xml.

XmlSerializer xs = new XmlSerializer(typeof(monObjet));
            using (StreamWriter wr = new StreamWriter("monObjetSerialise.xml"))
            {
                xs.Serialize(wr, _message);
            }

Mon problème vient lorsque je veux passer cet objet en paramètre dans une webmethod

webmethod:
[WebMethod]
    [XmlInclude(typeof(monObjet))]
    public string sendMessage(object obj)
    {
        return "toto";
    }

appel:
webService.sendMessage(monObjet);

erreur:
There was an error generating the XML document.

voilà, pouvez vous m'aider avant que je sois chauve, merci bien!

Adrien

4 réponses

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
21
Bonjour,

Pourquoi demandes-tu le type object dans ta webmethod.
Tu peux tout simplement faire:
[WebMethod]
public string sendMessage(monObject obj)
{
   return "toto";
}

A partir du moment où monObject est serializable en XML, cela ne devrait pas poser de problème.

Bonne journée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
6
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
21 avril 2009

Merci, mais j'ai une erreur si je fais ça:

The best overloaded method match for 'cpa_clientw.cpa_server.Service.sendMessage(cpa_clientw.cpa_server.message)' has some invalid arguments   
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
21
Peux-tu nous envoyer plus de code sur ton problème:
1) la signature (définition) de ta WebMethod. Juste l'interface sans le corps de la méthode.
2) ton code permettant d'appeler la méthode.

Merci,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
6
Date d'inscription
mardi 6 juin 2006
Statut
Membre
Dernière intervention
21 avril 2009

webmethod:

 [WebMethod]
    public string sendMessage(Message.message obj)
    {
    }

appel:
 cpa_server.Service webService = new cpa_server.Service();
            MessageBox.Show(webService.sendMessage(_message));