Domanda

Ho appena scritto il mio primo servizio Web, quindi ipotizziamo che la mia conoscenza del servizio Web sia inesistente. Voglio provare a chiamare una funzione dbClass dal servizio web. Tuttavia, ho bisogno di alcuni parametri presenti nella sessione. Esiste un modo per ottenere queste chiamate queste variabili di sessione dal servizio web ??

È stato utile?

Soluzione

Se si utilizzano i servizi Web ASP.NET e si desidera mantenere un ambiente di sessione per sé, è necessario abbellire il metodo del servizio Web con un attributo che indica che è necessaria una sessione.

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

Al termine, è possibile accedere agli oggetti sessione simili a aspx.

Metro.

Altri suggerimenti

Dovresti evitare di aumentare la complessità del livello di servizio aggiungendo variabili di sessione. Come qualcuno ha precedentemente sottolineato, pensa ai servizi web come a metodi isolati che prendono tutto ciò che è necessario per eseguire l'attività dal loro elenco di argomenti.

In generale i servizi Web non dovrebbero fare affidamento sui dati della sessione. Pensa a loro come a metodi ordinari: i parametri entrano e esce una risposta.

se vuoi Session [" username "]. ToString (); come nelle altre pagine C # dietro aspx, dovresti semplicemente sostituire [WebMethod] sopra il metodo WebService con [WebMethod (EnableSession = true)]

grazie a :) Metro

Forse questo funzionerà HttpContext.Current.Session [" Name] Altrimenti potresti dover inserire alcuni parametri o salvarli in un database

La tua domanda è un po 'vaga, ma farò del mio meglio per rispondere.

Suppongo che le variabili di sessione esistano sul server che sta effettuando la chiamata al servizio web e non sul server che ospita il servizio web. In tal caso, dovrai passare i valori necessari come parametri dei metodi del tuo servizio web.

Per utilizzare la sessione in webservice dobbiamo seguire 2 passaggi-

  1. Utilizzare l'attributo [WebMethod (EnableSession = true)] sul metodo.
  2. Sessione [" Nome "] = 50 (qualsiasi cosa tu voglia salvare) Controlla il seguente esempio.
[WebMethod(EnableSession = true)]  
public void saveName(string pname)  
{  
   Session["Name"] = pname;  

 }  

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top