检查会话是否为空会导致异常

时间:2016-03-30 11:25:18

标签: c# asp.net session

我有以下代码行:

HttpContext.Current.Session[Constants.SESSION_USER] = user;

导致异常,我假设因为会话为空。

如果删除此行,则不会抛出异常。

我能够从user对象中检索ID,因此我认为这不是造成问题的原因。

从这个问题:

How to know if a session has been set

我尝试了以下内容:

if (HttpContext.Current.Session[Constants.SESSION_USER] == null)
    throw new Exception("SESSIONULL");
else
    throw new Exception("SESSIONOTNULL");

但是这两个异常都没有被抛出 - 我假设是因为它试图访问一个空对象,所以在它执行我的代码之前抛出。

如果是这样,我怎么知道会话是否为空,我知道我可以使用try catch块来阻止错误,但我更希望以更精确的方式解决这个问题。

任何想法?

编辑:这不是上述问题的重复,因为上面的问题是尝试从会话中访问变量,我需要检查实际会话是否为空。请在下面给出答案。

2 个答案:

答案 0 :(得分:1)

问题是我试图从空会话中访问变量,因此它永远无法检查变量,因为会话为空。

解决方案如下:

            if (HttpContext.Current.Session != null)
            {
                HttpContext.Current.Session[Constants.SESSION_USER] = user;
            }

现在检查实际会话,而不是变量。

答案 1 :(得分:-2)

试试这个:

if(!string.IsNullOrEmpty(HttpContext.Current.Session[Constants.SESSION_USER]))
{
//for session is available
}