Bonjour
Je dois d=E9velopper un webservice et j'aimerai que celui ci me retourne
un objet.
Prenons un exemple simple : un webservice qui fait une addition et qui
retour un objet "resultat". Pour l'exemple cet objet contiendra les
deux op=E9randes de l'addition et le r=E9sultat.
using System;
using System.Web.Services;
using System.Xml.Serialization;
// Ma classe resultat qui va contenir les 2 op=E9randes et la somme
public class resultat {
int op1;
int op2;
int res;
public resultat(){}
public int Op1{
get {return op1;}
set {op1 =3D value;}
}
public int Op2{
get {return op2;}
set {op2 =3D value;}
}
public int Res{
get {return Res;}
set {Res =3D value;}
}
}
//Ma classe de webervice avec sa m=E9thode Add
public class calcul {
[WebMethod]
public resultat Add(int a, int b) {
resultat r =3D new resultat();
r.Op1 =3D a;
r.Op2 =3D b;
r.Res =3D a + b;
return r;
}
}
Donc ici, Add cr=E9e une instance de r=E9sultat puis assigne tous ses
membres et la retourne.
Lorsque j'execute ce webservice j'ai une erreur :
System.Web.Services.Protocols.SoapException: Server was unable to
process request. ---> System.StackOverflowException: Exception of type
System.StackOverflowException was thrown.
Je me demande alors si un webservice est capable de retourner un objet
perso. J'ai lu qu'il fallait que cet objet soit s=E9rialisable. Comment
faire?
Bon, j'ai réglé mon problème. Le webservice marche mais il me retourne un objet "vide". Le résultat de mon addition vaut 0.
Lorsque je fais resultat r = s.Add(10,15);
tous les membres de r sont à 0. Pourtant si je copie/colle le code de mon webservice dans une page aspx et que je l teste, il marche.
On dirait que la sérialisation ne fonctionne pas bien ...
Simon Mourier [SoftFluent]
Il y a juste le problème suivant
public int Res{ get {return Res;} set {Res = value;} }
doit être modifié en
public int Res{ get {return res;} set {res = value;} }
pour régler le pb de stackoverflow (si vous utilisiez la convention _res, on verrait plus vite le problème)
Sinon, ça fonctionne bien (au moins en framework 1.1), même si je suis surpris que ça marche sans que calcul ne dérive de WebService :-)
Simon. www.softfluent.com
"fragmonster" a écrit dans le message de news:
Bon, j'ai réglé mon problème. Le webservice marche mais il me retourne un objet "vide". Le résultat de mon addition vaut 0.
Lorsque je fais resultat r = s.Add(10,15);
tous les membres de r sont à 0. Pourtant si je copie/colle le code de mon webservice dans une page aspx et que je l teste, il marche.
On dirait que la sérialisation ne fonctionne pas bien ...
Il y a juste le problème suivant
public int Res{
get {return Res;}
set {Res = value;}
}
doit être modifié en
public int Res{
get {return res;}
set {res = value;}
}
pour régler le pb de stackoverflow (si vous utilisiez la convention _res, on
verrait plus vite le problème)
Sinon, ça fonctionne bien (au moins en framework 1.1), même si je suis
surpris que ça marche sans que calcul ne dérive de WebService :-)
Simon.
www.softfluent.com
"fragmonster" <fmeriot@gmail.com> a écrit dans le message de news:
1158132194.769801.87180@b28g2000cwb.googlegroups.com...
Bon, j'ai réglé mon problème. Le webservice marche mais il me
retourne un objet "vide". Le résultat de mon addition vaut 0.
Lorsque je fais
resultat r = s.Add(10,15);
tous les membres de r sont à 0. Pourtant si je copie/colle le code de
mon webservice dans une page aspx et que je l teste, il marche.
On dirait que la sérialisation ne fonctionne pas bien ...