如何检查Session中的用户邮箱?空值判断报错求助
问题解决:Session空值判断引发的空引用异常
错误原因
你的代码中,HttpContext.Session.GetString("userId") 在用户未登录时会返回 null,此时直接调用 .ToString() 会触发空引用异常——因为null对象无法调用任何方法。
修复方案
方案1:先获取Session值再判断空值
先把Session值存到变量里,再检查是否为空,避免直接对null调用方法:
var sessionUserId = HttpContext.Session.GetString("userId"); if (string.IsNullOrEmpty(sessionUserId)) { return RedirectToAction("ErrorPage"); } string UserMail = sessionUserId; // GetString本身返回string类型,无需额外ToString()
方案2:用空合并运算符简化逻辑
通过??空合并运算符直接处理null情况,让代码更简洁:
string sessionUserId = HttpContext.Session.GetString("userId") ?? string.Empty; if (string.IsNullOrEmpty(sessionUserId)) { return RedirectToAction("ErrorPage"); } string UserMail = sessionUserId;
额外说明
HttpContext.Session.GetString()方法返回值本身就是string类型,原代码中的.ToString()属于冗余操作,完全可以去掉。- 如果Session中存储的不是字符串类型(比如之前存的是数字或自定义对象),需要先判断值是否为null,再进行类型转换,避免再次触发空引用异常。
内容的提问来源于stack exchange,提问作者Jiddo
相关产品推荐
相关产品推荐

