HttpContext.Current.Session何时会为空?
我有一些asp.net页面。
我想知道为什么我应该始终检查Session对象是否为空?
例如:
public static object GetSession(string key)
{
if (HttpContext.Current.Session != null)
{
return HttpContext.Current.Session[key];
}
return null;
}
HttpContext.Current.Session何时会为空?
我有一些asp.net页面。
我想知道为什么我应该始终检查Session对象是否为空?
例如:
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]将为null,但不会是HttpContext.Current.Session本身。
在大多数日常编码场景中,Session对象不会为null,您的问题中的代码会过度消耗资源。同样,如果您提前知道Session对象为null,则不应尝试访问它。
如果您的应用程序在不寻常的情况下访问Session对象时可能为空,那么您的代码将是处理它的一种好方法,例如上述引用的问题中所描述的情况。
检查它的目的是为了防止页面在会话为空的情况下抛出一个丑陋的NullReferenceException。如果您检查它是否为空,您可以更新页面的会话,或者例如重定向到登录页面。
<configuration>
<system.web>
<sessionState mode="Off" />
</system.web>
</configuration>