在WebMethod中设置Session对象(使用EnableSession = true)而不存储值

时间:2016-04-14 17:35:04

标签: jquery asp.net session webforms

我通过WebMethod将变量传递给会话

[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet = true)]
public static bool lookEventQ(int eventuid)
{
    HttpContext.Current.Session["Q_EVENT_ID"] = eventuid;
    return true;
}

使用jQuery调用它:

 $.ajax({
                url: "<%= ResolveUrl("~/public-conference.aspx")%>/lookEventQ?eventuid=" + event,
                type: 'GET',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    //DO STUFF
                }
            });

但是,在另一个页面上,尝试访问此会话变量:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if (int.TryParse(Request.Form.Get(CONST_postKey), out eventID))
        {
            if(eventID == int.Parse(HttpContext.Current.Session["Q_EVENT_ID"])){
                //Do other stuff
            }
        }
    }
}

但是当访问时,会话是空的

1 个答案:

答案 0 :(得分:5)

找到解决方案。由于asp文件不包含属性EnablePageMethods设置为true的ScriptManager,因此会话不会维护。