无法在AJAX Call上保存并从Web服务会话ASMX asp.net获取价值

时间:2017-02-17 12:30:26

标签: c# ajax web-services session asmx

需要有关在asp.net Web服务中设置和获取会话对象的帮助。我在一个服务方法中保存会话,当尝试检索它时,只给出null。下面的示例代码用于保存会话

 [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("");
     }

获取会话:

[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);
     }

在上面的代码中,会话数据为空。我还在web配置中添加会话状态但不起作用:

<system.web>

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

感谢。

1 个答案:

答案 0 :(得分:0)

  

我在一个服务方法中保存会话,当尝试检索它时,只给出null。

如果这两个方法在同一个请求中,则它将为null。 .Net中的会话变量在响应头中的客户端设置,但是当您尝试读取它们时,它们来自客户端的请求标头,这些标头在请求发生后没有更改。