2017-02-17 2 views
0

Brauchen Sie Hilfe zum Festlegen und Abrufen von Objekt von Sitzung in ASP.net Web-Services. Ich spare Sitzung in einer Methode des Dienstes und wenn ich versuche, es zu erhalten, gibt einfach Null. Beispielcode ist unten für Sitzung zu speichernKann nicht speichern und Wert von Web-Service-Sitzung erhalten ASMX asp.net auf AJAX-Aufruf

[WebMethod(EnableSession = true)] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string setObj(NameValue[] formVars) 
    { 
     MyObject obj = new MyObject(); 
     obj.vlaue = "1"; 
     Session["obj"] = (object) obj; 
     return new JavaScriptSerializer().Serialize(""); 
    } 

Für immer Sitzung:

[WebMethod(EnableSession = true)] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string getObj(NameValue[] formVars) 
    { 
     MyObject obj = new MyObject(); 

     obj = (MyObject)Session["obj"] ; 
     return new JavaScriptSerializer().Serialize(obj.value); 
    } 

In obigen Code Sitzungsdaten ist null. Ich habe auch den Sitzungszustand in Web-Config hinzufügen, aber wird nicht funktionieren:

<system.web> 

<pages> 
    <namespaces> 
    <add namespace="System.Web.SessionState"/> 
    </namespaces> 
</pages> 
<sessionState mode="InProc"></sessionState> 

Dank.

+0

Erstens .. verwenden HttpContext.Current.Session .. Auch warum werfen Sie Ihre myObject nach unten auf ein Objekt, wenn Sie es speichern, in der Sitzung? Speichern Sie es einfach als MyObject. – Wheels73

+0

@ Wheels73 Ich habe HttpContext.Current.Session verwendet, aber das wird auch nicht funktionieren. versucht auch, MyObject direkt in Sitzung zu speichern. nächste Methodenaufruf gibt noch Null auf .. :( –

+0

haben Sie die sessionid auf dem Session-Objekt überprüft, wenn das Setzen und Empfangen ... sind sie gleich? – Wheels73

Antwort

0

Ich spare Sitzung in einer Methode des Dienstes und wenn versuchen, es abzurufen, gibt nur Null.

Wenn diese beiden Methoden während derselben Anfrage ausgeführt werden, ist der Wert null. Eine Sitzungsvariable in .Net wird auf der Clientseite in den Antwortheadern festgelegt, aber wenn Sie versuchen, sie zu lesen, stammen sie von den Anforderungsheadern des Clients, die seit der Anforderung nicht geändert wurden.

Verwandte Themen