Probleme de web service..

Signaler
Messages postés
16
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
9 février 2005
-
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
-
bonjour a tous,

J ai cree une application sous c# (window application), et je souhaitais lui faire deployer un web service pour recuperer des valeurs internes a l appli. Pour cela, j ai cree mon fichier .asmx et mon .asmx.cs, et j ai cree les methodes dont j avais besoin.

Ensuite, pour creer ma dll dont le web service a besoin, je suis alle dans les proprietes de mon projet, et j ai change mon type de sortie de "application window" a "bibliotheque de classe".

Or lorsque j appele mon web service, j ai remarque qu il me retournait les valeurs d initialisation de mes variables, et non pas les valeurs courantes, dynamique de l application en train de tourner.

Est-ce que ma methode de deploiement d un web service sur une appli existante est correcte, ou y a t il un moyen plus simple?
Et pourquoi mon web service ne me retourne pas les valeurs desirees?

8 réponses

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
J'ai rien compris .

Tu veux stocker des valeurs dans ton WS qui seront envoyé a une application qui l'appellera ?

Dans ce cas là a quoi sert de compilé en dll ton appli ...

Très brouillons ton explication si tu nous la refait en plus clair on pourra peut etre t'aider

::|The S@ib|::
MVP C#.NET
Messages postés
16
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
9 février 2005

Ok, je la refais moins crispe...

J ai une appli qui tourne, et qui deploie un web service. Ce web service permet de recuperer la valeur d un des parametres de mon appli (bien entendu, ce parametre change de valeur au cour de l execution).

Or, lorsque j appele ce web service avec un client, la reponse reste toujours la meme: la valeur d initialisation du parametre, et non sa valeur "dynamique" au cours de l execution de mon appli.

Donc je me pose la question de savoir si c est mon deploiement du web service qui est mauvais, ou si c est du a autre chose.
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Deployer un web service c'est juste le mettre en production sur ton serveur IIS, c'est pas ton appli qui fait çà , elle ne fait juste que l'utiliser.

Le problème n'es de toute façon pas là. Il faudrait que tu nous montre le code de ton WS et la façon ton client l'appel.

::|The S@ib|::
MVP C#.NET
Messages postés
16
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
9 février 2005

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;

namespace MyAppli
{
[WebService (Namespace = "MyAppli")]
public class WebService : System.Web.Services.WebService
{

public WebService()
{
InitializeComponent();
}
#region Code généré par le Concepteur de composants
//Requis par le Concepteur des services Web
private IContainer components = null;

private void InitializeComponent()
{
}

protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}

#endregion

[WebMethod]
public int retrieveMsgId()
{
return MyAppli.msgid;
}
}
}

msgid est un public static int de ma classe principale de mon appli (MyAppli).

Cote client, j ai fais ajoute une reference web vers ce web service, puis j ai instancie la classe proxy et j appele la methode (retrieveMsgId()) de cet objet.
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Je crois que tu n'as pas bien compris les Web Services.

Ton application ne peut pas etre un webservice et une applicaiton windows form en même temps.

Les deux sont des entités bien à part.

Quand tu fais çà :

return MyAppli.msgid;

il retournera toujours la même valeur ce qui est normal. Rien ne modifie cette valeur , et ton webservice ne la rend persistante jamais.

Imagine ton webservice comme une bibliothèque de fonctions
distante et indépendante de ton application windows form.

En gros ton webservice ne doit faire partie de ton application windows form mais être une entité à part

::|The S@ib|::
MVP C#.NET
Messages postés
56
Date d'inscription
lundi 7 juillet 2003
Statut
Membre
Dernière intervention
14 novembre 2007

Pour partager ta variable tu peux l'enregistrer dans un fichier ou une base de données au moment où elle change (côté application winform).
Ensuite quand ton web service est appelé, tu vas lire l'info dans la fichier ou la base de données.
Messages postés
16
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
9 février 2005

Tu as raison The Saib, je n avais pas bien compris le fonctionnement des web services...

Pour ce qui est de l enregistrement de la variable, ca marcherais, mais mon web service ne fais pas que ca, et le reste ne peut pas etre resolu avec une bdd...

On m a propose que mon web service lance mon appli (creer une instance de mon appli dans le constructeur du web service), et ainsi que les methodes du WS s appliquent sur l instance cree.
Ceci se fait bien apparement sous apache ou on peut arreter et relancer des web services, mais je n ai pas reussi a arriver a faire la meme chose sous IIS.

Quelqu un saurait il comment faire??
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Si ton WS lance une appli ce sera seulement sur le meme ordinateur que celui qui possède le webservice dans ce cas là un WebService ne t'es donc d'aucune utilité, un service windows le sera beaucoup plus !

::|The S@ib|::
MVP C#.NET