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;
}
}
}