Un Web Service est par défaut stateless, voici comment très simplement le rendre statefull.
Article inspiré par une question longtemps restée sans réponse dans le forum.
Pourquoi mon Web Service suivant ne veut il pas accumuler les caractères ?
public class Test : System.Web.Services.WebService
{
private string strCont;
[ WebMethod(Description="Ajout de caractères"]
public string Ajout(string s)
{
strCont += s;
return strCont ;
}
En fait : un web service est stateless.
Il n'est pas capable d'identifier un client
Une "mauvaise solution" serait de rajouter le modificateur "static" :
private static string strCont;
Ainsi, on aurait un comportement d'accumulation... mais n'isolant pas chaque client...
Source / Exemple :
//voici la version proposée de ce Web Service
//Elle s'appuie sur le concept de Session d'IIS : EnableSession=true est important !
public class Test : System.Web.Services.WebService
{
private string strCont;
[ WebMethod(Description="Ajout de caractères", EnableSession=true)]
public string Ajout(string s)
{
if (Session["strCont"] != null)
{
strCont = Session["strCont"].ToString();
}
else
{
strCont = "";
}
strCont += s;
Session["strCont"] = strCont;
return strCont ;
}