2

我需要在会话中存储一组字符串,并且我有一个通过 jQuery ajax 调用调用的 Web 方法:

[WebMethod]
public string AddIdToSession(string userId)
{
    List<string> userIds = new List<string>();

    if (HttpContext.Current.Session != null && 
        HttpContext.Current.Session["userIds"] != null)
    {
        userIds = (List<string>)Session["userIds"];
        userIds.Add(userId);
        HttpContext.Current.Session["userIds"] = userIds;
    }
    else
    {
        userIds.Add(userId);
        HttpContext.Current.Session.Add("userIds", userIds);  // error here
    }

    return userId;
}

当我尝试将 id 添加到会话时出现错误:

你调用的对象是空的。

我做错了吗?

4

3 回答 3

5

您需要使用以下EnableSession属性显式启用会话访问:

[WebMethod(EnableSession = true)]

请注意,您的else逻辑将在这种情况下触发HttpContext.Current.Session == null,这很可能是NullReferenceException.

于 2013-01-21T18:30:14.897 回答
0

您需要更改[WebMethod][WebMethod(EnableSession = true)] 才能访问当前会话。

然后您可以像这样访问当前会话:

HttpContext.Current.Session
于 2013-01-21T18:29:47.093 回答
0

您需要为 web 方法启用会话,将属性更改为

[WebMethod(EnableSession = true)] 
于 2013-01-21T18:31:05.980 回答