在什么情况下 HttpContext.Current.Session 可以为空?
我有一些asp.net 页面。
我只是想知道为什么我应该总是检查 Session 对象是否为 null ?
例如
public static object GetSession(string key)
{
if (HttpContext.Current.Session != null)
{
return HttpContext.Current.Session[key];
}
return null;
}
在什么情况下 HttpContext.Current.Session 可以为空?
我有一些asp.net 页面。
我只是想知道为什么我应该总是检查 Session 对象是否为 null ?
例如
public static object GetSession(string key)
{
if (HttpContext.Current.Session != null)
{
return HttpContext.Current.Session[key];
}
return null;
}
查看此页面:如果当前 ASP.NET 会话为空,我该怎么办?. 它对可能性有很好的解释。
编辑
您很少会遇到不知道 Session 对象是否可用并且您想从中访问值的情况。在大多数情况下,包括其他答案提到的那些,HttpContext.Current.Session[key]将为空,但不是HttpContext.Current.Session本身。
在大多数日常编码场景中, Session 对象不会为空,并且您问题中的代码将是矫枉过正的。同样,如果您提前知道 Session 对象为空,您甚至不应该尝试访问它。
如果您的应用程序在不寻常的情况下访问 Session 对象,而该对象可能为空,也可能不为空,那么您的代码将是处理它的好方法,例如上面引用的问题中描述的那些。
检查它的目的是防止您的页面在会话为空的情况下抛出丑陋的 NullReferenceException。例如,如果您检查它是否为空,则可以更新页面的会话,或重定向到登录页面。
如果 sessionState 在 web.config 中关闭,它可能为 null
<configuration>
<system.web>
<sessionState mode="Off" />
</system.web>
</configuration>