asp.net页面跳转传值问题

问题遇到的现象和发生背景

在"Speak"页面输入的信息,不能正常显示在"SpeakShow"页面上

问题相关代码,请勿粘贴截图
//Speak页面代码
public partial class Speak : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //确保网站能够正常运行。
        UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
        //记录登录人名称
        if (Session["uname"] != null)
            Lab_name.Text = Session["uname"].ToString();

        //记录发言人数
        lbl_Sum.Text = Application["OnlineNum"].ToString();

        if (!Page.IsPostBack)
        {
            Application.Lock();
            if (Application["user_Sum"] == null)
            {
                Application["user_Sum"] = 0;
                Application["user_Sum"] = (int)Application["user_Sum"] + 1;
                lbl_Sum.Text = Application["user_Sum"].ToString();
                Application.UnLock();
            }
        }
    }

    protected void btn_Speak_Click(object sender, EventArgs e)
    {
        string str = "IP地址:" + Request.UserHostAddress + "<hr>";
        str += "发言者:" + Lab_name.Text + "<hr>";
        str += "发言时间:" + DateTime.Now + "<hr>";
        str += "发言内容:" + txt_Speak.Text + "<hr color=#00ffff>";
        Application.Lock();
        Application["message"] = str + Application["message"];
        Application.UnLock();
        txt_Speak.Text = "";
    }
}

//SpeakShow页面代码
public partial class SpeakShow : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Application["message"] == null)
        {
            Lab_msg.Text = "";
        }
        else
        {
            Lab_msg.Text = Application["message"].ToString();
        }
    }
}

//全局变量代码
<%@ Application Language="C#" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e)
    {
        // 在应用程序启动时运行的代码

        //初始化应用程序变量UserOnline和total
        //用于保存统计在线用户个数以及访问总数的存储信息,在应用程序范围的缓存的访问
        Application.Lock();
        //用户在线个数
        Application["UserOnline"] = 0;
        //访问总数
        Application["OnlineNum"] = 0;
        Application.UnLock();

    }

    void Application_End(object sender, EventArgs e)
    {
        //  在应用程序关闭时运行的代码

    }

    void Application_Error(object sender, EventArgs e)
    {
        // 在出现未处理的错误时运行的代码

    }

    void Session_Start(object sender, EventArgs e)
    {
        // 在新会话启动时运行的代码
        //设置Session的会话间隔时间为1分钟有效
        Session.Timeout = 1;
        //锁定对HttpApplicationState变量的访问以促进访问同步
        Application.Lock();
        //用户个数统计的应用程序变量UsersOnline增加1
        Application["OnlineNum"] = (int)Application["OnlineNum"] + 1;
        //用户总数增加1
        //Application["total"] = (int)Application["total"] + 1;
        //取消锁定对HttpApplicationState变量的访问以促进访问同步
        Application.UnLock();
        Session["StartTime"] = DateTime.Now;

    }

    void Session_End(object sender, EventArgs e)
    {
        // 在会话结束时运行的代码。 
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
        // 或 SQLServer,则不引发该事件。

        //Session结束时更新计数器和页面
        Application.Lock();
        Application["OnlineNum"] = (int)Application["OnlineNum"] - 1;
        Application.UnLock();

    }

</script>
运行结果及报错内容

img

我想要达到的结果

信息能够正确显示

碎碎念

没咋学好还遇到了实训,各位友友救命/(ㄒoㄒ)/~~

你好,
我试了你的代码,没问题啊. 你有什么报错信息吗? 你试一下我的代码呢.(假设Lab_name.Text 是1)
Speak.aspx:

            <asp:Label ID="Lab_name" runat="server" Text="1"></asp:Label>
            <asp:Label ID="lbl_Sum" runat="server" Text="Label"></asp:Label>
            <asp:TextBox ID="txt_Speak" runat="server"></asp:TextBox>
            <asp:Button ID="btn_Speak" runat="server" Text="Click" OnClick="btn_Speak_Click" />

Speak.aspx.cs:

protected void Page_Load(object sender, EventArgs e)
        {
            UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
            //记录登录人名称
            if (Session["uname"] != null)
                Lab_name.Text = Session["uname"].ToString();

            //记录发言人数
            lbl_Sum.Text = Application["OnlineNum"].ToString();

            if (!Page.IsPostBack)
            {
                Application.Lock();
                if (Application["user_Sum"] == null)
                {
                    Application["user_Sum"] = 0;
                    Application["user_Sum"] = (int)Application["user_Sum"] + 1;
                    lbl_Sum.Text = Application["user_Sum"].ToString();
                    Application.UnLock();
                }
            }
        }
        protected void btn_Speak_Click(object sender, EventArgs e)
        {
            string str = "IP地址:" + Request.UserHostAddress + "<hr>";
            str += "发言者:" + Lab_name.Text + "<hr>";
            str += "发言时间:" + DateTime.Now + "<hr>";
            str += "发言内容:" + txt_Speak.Text + "<hr color=#00ffff>";
            Application.Lock();
            Application["message"] = str + Application["message"];
            Application.UnLock();
            txt_Speak.Text = "";
        }

SpeakShow.aspx:

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

SpeakShow.aspx.cs:

 protected void Page_Load(object sender, EventArgs e)
        {
            if (Application["message"] == null)
            {
                Lab_msg.Text = "";
            }
            else
            {
                Lab_msg.Text = Application["message"].ToString();
            }

        }

Global.asax.cs:

void Application_Start(object sender, EventArgs e)
        {
            // Code that runs on application startup
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            Application.Lock();
            //用户在线个数
            Application["UserOnline"] = 0;
            //访问总数
            Application["OnlineNum"] = 0;
            Application.UnLock();

        }
        void Session_Start(object sender, EventArgs e)
        {
            // 在新会话启动时运行的代码
            //设置Session的会话间隔时间为1分钟有效
            Session.Timeout = 1;
            //锁定对HttpApplicationState变量的访问以促进访问同步
            Application.Lock();
            //用户个数统计的应用程序变量UsersOnline增加1
            Application["OnlineNum"] = (int)Application["OnlineNum"] + 1;
            //用户总数增加1
            //Application["total"] = (int)Application["total"] + 1;
            //取消锁定对HttpApplicationState变量的访问以促进访问同步
            Application.UnLock();
            Session["StartTime"] = DateTime.Now;

        }

        void Session_End(object sender, EventArgs e)
        {
            // 在会话结束时运行的代码。 
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
            // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
            // 或 SQLServer,则不引发该事件。

            //Session结束时更新计数器和页面
            Application.Lock();
            Application["OnlineNum"] = (int)Application["OnlineNum"] - 1;
            Application.UnLock();

        }

截图:

img