在什么情况下HttpContext.Current.Session可以为null?
我有一些asp.net页面。
我只是想知道为什么我应该一直检查Session对象是否为null?
e.g。
public static object GetSession(string key)
{
if (HttpContext.Current.Session != null)
{
return HttpContext.Current.Session[key];
}
return null;
}
答案 0 :(得分:4)
查看此页面:What should I do if the current ASP.NET session is null?。它对可能性有了很好的解释。
修改强>
如果会话对象可用 和 您希望从中访问某个值,那么您很少会遇到这种情况。在大多数情况下,包括其他答案提到的那些, HttpContext.Current.Session [key] 将为null,但不是 HttpContext.Current.Session 本身。
在大多数日常编码场景中,Session对象不会为null,并且您的问题中的代码会过度。同样,如果您提前知道Session对象为null,则您甚至不应该尝试访问它。
如果您的应用程序在异常情况下访问Session对象时可能会或可能不为null,那么您的代码将是一种处理它的好方法,例如上面引用的问题中描述的那些。
答案 1 :(得分:2)
检查它的目的是防止您的页面在会话为空时抛出丑陋的NullReferenceException。例如,如果您检查它是否为空,则可以续订页面的会话,或重定向到登录页面。
答案 2 :(得分:0)
如果在web.config中关闭sessionState,它可能为null
<configuration>
<system.web>
<sessionState mode="Off" />
</system.web>
</configuration>