我有以下代码行:
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块来阻止错误,但我更希望以更精确的方式解决这个问题。
任何想法?
编辑:这不是上述问题的重复,因为上面的问题是尝试从会话中访问变量,我需要检查实际会话是否为空。请在下面给出答案。答案 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
}