WebService C# (variable non modifiée !!)

Signaler
Messages postés
8
Date d'inscription
vendredi 6 février 2004
Statut
Membre
Dernière intervention
7 septembre 2007
-
Messages postés
8
Date d'inscription
vendredi 6 février 2004
Statut
Membre
Dernière intervention
7 septembre 2007
-
Bonjour,



Je débute tout juste en C# (Visual Studio 2005), et j'ai déjà un
problème (désolé si ça vous parait trivial, mais moi ça me prend la
tête) :

Je crée un WebService tout simple et une appli cliente :



WEBSERVICE



using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;



[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service : System.Web.Services.WebService

{

public Service () {

}

private string sNom = "init";





[WebMethod]

public string RetourneNom() {

return sNom;

}

[WebMethod]

public void ModifierNom(string sNouveau) {

sNom = sNouveau;

}

}



APPLI_CLIENTE



using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;



namespace CLIENT

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}



private void button1_Click(object sender, EventArgs e)

{

localhost.Service os = new localhost.Service();



MessageBox.Show(os.RetourneNom());



os.ModifierNom("moi");

MessageBox.Show(os.RetourneNom());

}

}

}

le problème c'est que l'applic cliente m'affiche :

- "init" au premier appel à RetourneNom ==> normal

- "ini" au deuxième appel ==> pas normal, il ne prend pas en compte ma modif avec ModifierNom !!



Pourtant ce code fonctionne si je supprime le webservice et que je
déporte son code dans une classe dans l'appli cliente (qui devient une
appli normale sans webservice).



Quelqu'un comprend-il ce qui se passe !!!!!



D'avance merci

2 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Hello,

C'est normal, car à chaque fois que tu appel le WebService, il recrée l'objet.
Si tu veux conserver les données, il faut ou les mettre en session, ou les mettre dans une base de données si l'état doit survivre à la session.

Je t'expose ici un exemple avec la Session :

[WebMethod(EnableSession=true)]
public string RetourneNom() {
if (Session["sNom"]== null)
Session["sNom"]= "init"
return (string)Session["sNom"];
}
[WebMethod(EnableSession=true)]
public void ModifierNom(string sNouveau) {
Session["sNom"]= sNouveau;
}

Amicalement, SharpMao
Messages postés
8
Date d'inscription
vendredi 6 février 2004
Statut
Membre
Dernière intervention
7 septembre 2007

merci.



une uatre petite question :

mon web service est sur un serveur (Windows Server 2003 Standard
Edition) et mon client sur un poste client (XP Pro) relié au serveur.
Pour accéder à mon WebService depuis le poste client, j'ai un peu
galéré au début, mais au final j'ai créé un VPN sur le serveur et
configuré le client pour y accéder. J'arrive donc à accéder au
WebService depuis le client
(http://xxx.xxx.xxx.xxx/Mon_WS/Service.asmx) mais c'est très lent
(environ 1 min pour que la page web s'affiche !!). N'y a-t-il pas un
autre moyen d'accéder à mon WebService ??? (sur internet,
microsoft,.... je trouve que des exemples d'utilisation en local d'un
WebService, mais jamais d'exemple pour une utilisation à distance avec
surtout une explication pour configurer le serveur et le client pour
autorisé les connexions)



Si vous pouvez m'aider ce serait super sympa.

Merci.