title: ASP.NET Session becomes null after postback on local
body: <p>Here is my code that runs on page load:</p>
  
  <pre><code>protected void Page_Load(object sender, EventArgs e)
  {
      DisableChaching();
      if (Request.Cookies["UserName"] == null)
      {
          if (Session["UserName"] == null)
          {
              Response.Redirect("~/Default.aspx");
          }
          else if (Session["AccessLevel"].ToString().Equals("2"))
          {
              Response.Redirect("~/Default.aspx");
          }
      }
      else if (Session["AccessLevel"].ToString().Equals("2"))
      {
          Response.Redirect("~/Default.aspx");
      }
      if (!IsPostBack)
      {
          LoadControls();
          BindGrid();
      }
  }
  </code></pre>
  
  <p>Sometimes when I try to save some data to database and I get an error, I try to <em>re-save</em> the data by clicking my save button, and I get this error: </p>
  
  <blockquote>
    <p>Object reference not set to an instance of an object </p>
  </blockquote>
  
  <p>on the following line if code:</p>
  
  <pre><code>else if (Session["AccessLevel"].ToString().Equals("2"))
  </code></pre>
  
  <p>Why am I getting this error?</p>
  
  <p>here is my code in Login user control where ChR is the checkbox to remember the user :</p>
  
  <pre><code>if (ChR.Checked == true)
              {
                  Response.Cookies["UserName"].Value = txtUserName.Text.Trim();
                  Response.Cookies["UserName"].Expires = DateTime.Now.AddMonths(2);
                  Response.Cookies["AccessLevel"].Value = member.AccessLevel.ToString();
                  Response.Cookies["AccessLevel"].Expires = DateTime.Now.AddMonths(2);
                  Response.Cookies["FirstName"].Value = member.FirstName;
                  Response.Cookies["FirstName"].Expires = DateTime.Now.AddMonths(2);
                  Response.Cookies["LastName"].Value = member.LastName;
                  Response.Cookies["LastName"].Expires = DateTime.Now.AddMonths(2);
                  Session["UserName"] = txtUserName.Text.Trim();
                  Session["AccessLevel"] = member.AccessLevel.ToString();
                  Response.Redirect("~/Default.aspx");
              }
              else
              {
                  Session["UserName"] = txtUserName.Text.Trim();
                  Session["AccessLevel"] = member.AccessLevel.ToString();
                  Session["FirstName"] = member.FirstName;
                  Session["LastName"] = member.LastName;
                  Response.Redirect("~/Default.aspx");
              }
  </code></pre>
  
  <p>and in my master page I assign values to sessions this way in the page_Load event:</p>
  
  <pre><code>DisableChaching();
      FillInfo();
      if (Request.Cookies["UserName"] != null)
      {
          Session["UserName"] = Request.Cookies["UserName"].Value;
          Session["AccessLevel"] = Request.Cookies["AccessLevel"].Value;
          Session["FirstName"] = Request.Cookies["FirstName"].Value;
          Session["LastName"] = Request.Cookies["LastName"].Value;
          WellCome();
          if (Session["AccessLevel"].ToString() == "1")
          {
              RenderMenu(AcccessLevel.SiteManager);
          }
          else if (Session["AccessLevel"].ToString() == "2")
          {
              RenderMenu(AcccessLevel.Client);
          }
      }
      else if (Session["UserName"] != null)
      {
          WellCome();
          if (Session["AccessLevel"].ToString() == "1")
          {
              RenderMenu(AcccessLevel.SiteManager);
          }
          else if (Session["AccessLevel"].ToString() == "2")
          {
              RenderMenu(AcccessLevel.Client);
          }
  
      }
      else
      {
          WellGo();
          RenderMenu(AcccessLevel.LogedOutUser);
      }
  enter code here
  </code></pre>