Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# get返回空值_C#_.net - Fatal编程技术网

C# get返回空值

C# get返回空值,c#,.net,C#,.net,我有课 public static class SessionManager { public static UserSession UserSession { set { HttpContext.Current.Session["USER_SESSION"] = value; } get { UserSession user

我有课

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;
而且
usersession
总是
null

有什么线索可以修复吗?

试试这个:

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

我找到了解决办法

我忘了在Global.asax.cs下插入

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

            SessionManager.UserSession = userSession; 

        }

我认为,您在物业中实际寻找的模式更像这样:

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。)

您是否设置过它?如果您没有在
catch(exception){}
中捕获并删除异常,您会看到什么stacktrace?@MikeSamuel在
下没有任何异常,请尝试{userSession=(userSession)HttpContext.Current.Session[“USER_Session”];}catch(exception){}
httpcontext在你试图使用它的地方可用吗?@Peretz,你怎么知道的?@MikeSamuel我在那里放了一个断点。那你为什么还要在属性中“新建”它呢?
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;
        }
    }
}