SESSION值过期报错该如何解决?
'/Index'应用程序中的服务器错误。
--------------------------------------------------------------------------------
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 36: if(!Page.IsPostBack)
行 37: {
行 38: if((Session[ "User_Name "]!=null)||(Session[ "User_Name "].ToString()!= " "))
行 39: {
行 40: try
源文件: C:\Inetpub\wwwroot\Index\Controls\AdminControl.ascx.cs 行: 38
堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
Index.Controls.AdminControl.Page_Load(Object sender, EventArgs e) in C:\Inetpub\wwwroot\Index\Controls\AdminControl.ascx.cs:38
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Control.LoadRecursive() +98
System.Web.UI.Control.LoadRecursive() +98
System.Web.UI.Page.ProcessRequestMain() +731
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573
------解决方法--------------------------------------------------------
try..
if((Session[ "User_Name "]!=null) && (Session[ "User_Name "].ToString()!= " "))
------解决方法--------------------------------------------------------
((Session[ "User_Name "]!=null)||(Session[ "User_Name "].ToString()!= " ")
分析一下
session 不为空时
没问题
session 过期后
Session[ "User_Name "]!=null 不符合
又因为是 ||,所以就运行到后面去,Session[ "User_Name "].ToString() 必报错
解决办法是:
改为
if((Session[ "User_Name "]!=null)&&(Session[ "User_Name "].ToString()!= " "))
再分析一下
session 不为空时 运行到后面不报错
session 过期后
Session[ "User_Name "]!=null 不符合 马上否定 后面语句不会运行 不报错
结论就是,改:
if((Session[ "User_Name "]!=null)&&(Session[ "User_Name "].ToString()!= " "))