I use Visual Studio 2012 to create some UserControls to be wrapped on SharePoint 2010. The following is code of one of them:
public partial class SideBarUserControl : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        liLogout.Visible = false;
        attendance.Visible = false;
        empEvaluation.Visible = false;
        Objections.Visible = false;
        myEval.Visible = false;
        rates.Visible = true;
        if (PageBase.CurrentUser == null)
        {
            string LoginName = SPContext.Current.Web.CurrentUser.LoginName;
            LoginName = LoginName.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries)[1];
            if (SystemUserBLL.IsUserExist(LoginName, "123456"))
            {
                SystemUserBLL.Login(LoginName, "123456");
            }
            else
                Response.Redirect("Login.aspx", true);
        }
        if (new UserDAL().GetUserFieldValue(PageBase.CurrentUser.ID, 51).FieldValue == "الدرجة الثانية")
        {
            rates.Visible = false;
            sysSettings.Visible = false;
            reports.Visible = false;
            string EmployeeType = new UserDAL().GetUserFieldValue(PageBase.CurrentUser.ID, 39).Value;
            myEval.Visible = false;
            if (EmployeeType == "2") // Employee
            {
                if (!Request.Path.ToLower().Contains("rateform.aspx") && !Request.Path.ToLower().Contains("myevaluation.aspx")
                    && !Request.Path.ToLower().Contains("homepage.aspx"))
                    Response.Redirect("MyEvaluation.aspx");
                myEval.Visible = true;
                Objections.Visible = false;
                empEvaluation.Visible = false;
            }
            else if (EmployeeType == "3") // Wakeel
            {
                if (!Request.Path.ToLower().Contains("rateform.aspx") && !Request.Path.ToLower().Contains("objections.aspx") && !Request.Path.ToLower().Contains("userevaluation.aspx")
                    && !Request.Path.ToLower().Contains("homepage.aspx") && !Request.Path.ToLower().Contains("percentages.aspx")
                    && !Request.Path.ToLower().Contains("userattendance.aspx"))
                    Response.Redirect("UserEvaluation.aspx");
                rates.Visible = false;
                Objections.Visible = true;
                empEvaluation.Visible = true;
                attendance.Visible = true;
                myEval.Visible = false;
                sysSettings.Visible = true;
                form.Visible = false;
                waitperiod.Visible = false;
            }
            else // Manager
            {
                if (!Request.Path.ToLower().Contains("rateform.aspx") && !Request.Path.ToLower().Contains("myevaluation.aspx")
                    && !Request.Path.ToLower().Contains("objections.aspx") && !Request.Path.ToLower().Contains("userevaluation.aspx")
                    && !Request.Path.ToLower().Contains("homepage.aspx") && !Request.Path.ToLower().Contains("userattendance.aspx"))
                    Response.Redirect("UserEvaluation.aspx");
                //myEval.Visible = false;
                rates.Visible = false;
                myEval.Visible = true;
                Objections.Visible = true;
                empEvaluation.Visible = true;
                attendance.Visible = true;
            }
            agenciesmanagers.Visible = false;
        }
    }
}
When I try to run it on SharePoint sometimes it runs perfectly and sometimes I have the following error.
(createchildcontrole) = object reference not set to an instance of an object
If the error occurred just refreshing the page solving the problem.
 
    