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 に答える