6

在什么情况下 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;

}
4

3 回答 3

4

查看此页面:如果当前 ASP.NET 会话为空,我该怎么办?. 它对可能性有很好的解释。

编辑

您很少会遇到不知道 Session 对象是否可用并且您想从中访问值的情况。在大多数情况下,包括其他答案提到的那些,HttpContext.Current.Session[key]将为空,但不是HttpContext.Current.Session本身。

在大多数日常编码场景中, Session 对象不会为空,并且您问题中的代码将是矫枉过正的。同样,如果您提前知道 Session 对象为空,您甚至不应该尝试访问它。

如果您的应用程序在不寻常的情况下访问 Session 对象,而该对象可能为空,也可能不为空,那么您的代码将是处理它的好方法,例如上面引用的问题中描述的那些。

于 2012-10-31T15:28:09.720 回答
2
  • 如果 IIS 重置您的 Session 将变为空。
  • 如果会话超时到期,它将变为空。
  • 可能还有其他原因。

检查它的目的是防止您的页面在会话为空的情况下抛出丑陋的 NullReferenceException。例如,如果您检查它是否为空,则可以更新页面的会话,或重定向到登录页面。

于 2012-10-31T15:29:15.387 回答
0

如果 sessionState 在 web.config 中关闭,它可能为 null

 <configuration>
  <system.web>
    <sessionState mode="Off" />
  </system.web>
</configuration>
于 2012-10-31T15:27:21.497 回答