空引用异常 - 重定向时不捕获标签值

Null Reference Exception - Not Capturing Label Value on Redirect

我有一个名为 UserInfo 的 class,它使用 PrincipalContext 从页面上经过身份验证的用户那里获取数据。这项工作在页面加载时成功。我在标签中的页面加载时捕获用户的活动目录显示名称。

问题:我想重定向到 post 页面。如果我不将用户重定向到其他页面,则包含的代码会起作用,Interent 研究表明这是因为状态被保留了。此外,即使我在调试模式下收到空错误,数据实际上也如预期的那样存储在数据库中。但是,当我确实尝试将用户重定向到新页面时,标签的值可能会丢失,并且会发生此错误。我不知道为什么重定向会导致页面再次重新加载,但由于标签值丢失,我的错误变成了 "null reference unhandled by user code." 我试图检查空值,并实例化 class ,正如几个 post 所指出的,但是当我执行调试时,错误出现在这一行: "lbRequesterName.Text = userinfo.DisplayName;" 所以,很明显我做错了什么。下面的代码页和标记。

protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            UserInfo userinfo = new UserInfo();

            if (userinfo != null)
            {
                lbRequesterName.Text = userinfo.DisplayName;
            } 
        }

    //Submit data
        protected void btnSubmit_click(object sender, EventArgs e)
        {
            insertReg();
        }


        protected void insertReg()
        {
            DataTable dt = new DataTable();

            string strHidRecID = hidRecID.Value;
            if (strHidRecID == "") strHidRecID = "0";

            dt = dataAccessClass.ExecuteDataTable
            (
                "spRegInsert", dataAccessClass.dbName, new SqlParameter[2]
                {
                    new SqlParameter ("@vRequesterName",lbRequesterName.Text),
                    new SqlParameter ("@vRecID", strHidRecID)

                }
            );

            hidRecID.Value = dt.Rows[0]["recID"].ToString();
            Response.Redirect("RegPost.aspx?recID=" + dt.Rows[0]["recID"].ToString());
        }


//Markup
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<form id="frmInput" runat="server" action="">



<asp:Label runat="server" ID="lbRequesterName" Text="Name"></asp:Label>

<asp:Button ID="btnSubmit" runat="server" CssClass="btn" OnClick="btnSubmit_click" Text="Submit"/>

<asp:HiddenField runat="server" ID="hidRecID"/>

问题是我的 webconfig 文件没有对 post 页面上的用户进行身份验证。我在网络配置中添加了这一行以允许经过身份验证的用户,其余代码有效:

<location path="RegPost.aspx">
<system.web>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>