用习惯了asp,总是把session没有定义直接拿来使用.
今天做一个小小的东西却出了问题,简化地说:
1.做一个 设置session的页面, 然后自动redirect 到显示 session的页面,这样是没有问题的;对,以前就这么做的;
2. 今天一个老哥,他先访问了显示session的页面,问题出来了,
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。 源错误:
“/WebSite1”应用程序中的服务器错误。
未将对象引用设置到对象的实例。
行 19: // }
行 20:
行 21: this.Label1.Text = Session["name"].ToString();
行 22: }
行 23: protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) |
源文件: d:/My Documents/Visual Studio 2005/WebSites/WebSite1/Default2.aspx.cs 行: 21 堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
Default2.Page_Load(Object sender, EventArgs e) in d:/My Documents/Visual Studio 2005/WebSites/WebSite1/Default2.aspx.cs:21
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +31
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +68
System.Web.UI.Control.OnLoad(EventArgs e) +88
System.Web.UI.Control.LoadRecursive() +74
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3034
|
解决办法: 在显示session的语句前面加上:
if (Object.Equals(Session["name"],null) ) { Session["name"]="没有值"; }
OK,问题解决.