我需要在会话中存储一组字符串,并且我有一个我通过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添加到会话时收到错误:
对象引用未设置为对象的实例。
我这样做错了吗?
答案 0 :(得分:5)
您需要使用EnableSession
属性显式启用会话访问:
[WebMethod(EnableSession = true)]
请注意else
逻辑将在案例HttpContext.Current.Session == null
中触发,这可能是NullReferenceException
的原因。
答案 1 :(得分:0)
您需要将[WebMethod]
更改为[WebMethod(EnableSession = true)]
才能访问当前会话。
然后您可以像这样访问当前会话:
HttpContext.Current.Session
答案 2 :(得分:0)
您需要为Web方法启用会话,将属性更改为
[WebMethod(EnableSession = true)]