Question

Je viens d'écrire mon premier service Web, supposons donc que ma connaissance du service Web est inexistante. Je souhaite essayer d'appeler une fonction dbClass à partir du service Web. Cependant, j'ai besoin de certains paramètres qui sont dans la session. Est-il possible d'obtenir ces appels de variables de session depuis le Webservice?

Était-ce utile?

La solution

Si vous utilisez des services Web ASP.NET et que vous souhaitez conserver un environnement de session, vous devez embellir votre méthode de service Web avec un attribut indiquant que vous avez besoin d'une session.

[WebMethod(EnableSession = true)]
public void MyWebService()
{
    Foo foo;
    Session["MyObjectName"] = new Foo();
    foo = Session["MyObjectName"] as Foo;
}

Une fois que cela est fait, vous pouvez accéder à des objets de session similaires à aspx.

Métro.

Autres conseils

Vous devez éviter d'augmenter la complexité de la couche de service en ajoutant des variables de session. Comme quelqu'un l'a déjà fait remarquer, considérez les services Web comme des méthodes isolées qui prennent tout le nécessaire pour exécuter la tâche dans leur liste d'arguments.

En général, les services Web ne doivent pas compter sur les données de session. Considérez-les comme des méthodes ordinaires: les paramètres entrent et une réponse apparaît.

si vous devez vouloir une session [" username "]. ToString (); comme dans les autres pages C # derrière aspx, remplacez simplement [WebMethod] au-dessus de la méthode WebService par [WebMethod (EnableSession = true)]

grâce à :) Metro

Peut-être que cela fonctionnera HttpContext.Current.Session [" Nom] Sinon, vous devrez peut-être prendre certains paramètres ou les stocker dans une base de données

Votre question est un peu vague, mais je ferai de mon mieux pour y répondre.

Je suppose que vos variables de session existent sur le serveur qui passe l'appel du service Web, et non sur le serveur qui héberge le service Web. Dans ce cas, vous devrez transmettre les valeurs nécessaires en tant que paramètres de vos méthodes de service Web.

Pour utiliser session in webservice, nous devons suivre deux étapes -

  1. Utilisez l'attribut [WebMethod (EnableSession = true)] sur la méthode.
  2. Session [" Nom "] = 50 (tout ce que vous souhaitez enregistrer) Veuillez vérifier l'exemple suivant.
[WebMethod(EnableSession = true)]  
public void saveName(string pname)  
{  
   Session["Name"] = pname;  

 }  

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top