游客
Session 读取错误-未将对象引导用设置到对像的实例

小白学技术总是在黑暗中摸索前行,不断的碰壁,有时候只是个很小的问题,却能困扰你一个下午,甚至几天。这次碰到的Session问题就是如此。先看错误详情!

image.png

经测试发现,问题在于页面的生命周期,在Session机制未加载之前尝试了读取,所以提示找不着对像。在aspx后面的Page事件之前初始化了一个公共类,而此类的构造时定义了一个对像并尝试读取Session中的某个键。这才是错误的根源。代码如下:

【aspx页面】
namespace LGCMS.Web.Manage.Classify
{
    public partial class ClassEdit : System.Web.UI.Page
    {
        protected int subCount = 0;
        protected Model.ClassIfy thisClass;
        protected Model.ClassIfy parentClass;
        protected List<Model.Templete> list_PcTpl;//PC模版
        protected List<Model.Templete> list_WapTpl;//手机模版
        protected BLL.Templete templete = new BLL.Templete();
        protected List<Model.ClassIfy> list_Class;//所有分类列表
        BLL.Classify bll= new BLL.Classify();/////////////////【此行错误】
        protected override void OnPreInit(EventArgs e)
        {
            BLL.Admins.CheckLogin(false);
           // bll= 
            BLL.Site.RemberCurrentPageUrl(Request.Url.LocalPath);
            base.OnPreInit(e);
        }
【公共类】
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;

namespace LGCMS.BLL
{
    public class Classify
    {
        DAL.Classify dal = new DAL.Classify();
        List<Model.ClassIfy> sortList = new List<Model.ClassIfy>();
        Model.Admins admin = HttpContext.Current.Session["LoginAdmin"] as Model.Admins;///【此行错误】
        #region【1】添加分类
        public string AddClass(Model.ClassIfy c)
        {
            int newId = dal.AddClassify(c);


总结:学好.net 首先要了解页面的生命周期,切记!切记!