0

クラスがあります

public static class SessionManager
{
    public static UserSession UserSession
    {
        set
        {                
           HttpContext.Current.Session["USER_SESSION"] = value;
        }
        get
        {
           UserSession userSession = new UserSession();

           try
           {
              userSession = (UserSession)HttpContext.Current.Session["USER_SESSION"];
           }
           catch (Exception)
           {
           }

           return userSession;
       }
   }
}

そして私はそれを使おうとしています

var userSession = SessionManager.UserSession;

そして、それuserSesssionは常にnullです。

それをどのように修正できるかについての手がかりはありますか?

4

3 に答える 3

1

私はあなたが実際にあなたの財産で探しているパターンはこのように見えると思います:

public static class SessionManager
{
    public static UserSession UserSession
    {
        set
        {                
           HttpContext.Current.Session["USER_SESSION"] = value;
        }
        get
        {
            var session = HttpContext.Current.Session;
            var userSession = session["USER_SESSION"] as UserSession;

            if (userSession == null)
            {
                userSession = new UserSession ();
                session["USER_SESSION"] = userSession;
            }

            return userSession;
        }
    }
}

(私は発生しただけvar session = HttpContext.Current.Session;なので、すべてStackOverflowにうまく収まります。)

于 2012-11-04T19:01:14.323 に答える
1

これを試して:

userSession = (UserSession)(HttpContext.Current.Session["USER_SESSION"]);

-また-

userSession = HttpContext.Current.Session["USER_SESSION"] as UserSession;
于 2012-11-04T18:46:20.120 に答える
0

私は解決策を見つけました...

Global.asax.csの下に挿入するのを忘れました

void Session_Start(object sender, EventArgs e)
        {
            var userSession = new UserSession();

            SessionManager.UserSession = userSession; 

        }
于 2012-11-04T18:49:58.750 に答える