如何在ASP.Net Webform中处理和**显示**页面级异常

如何在ASP.Net Webform中处理和**显示**页面级异常,asp.net,Asp.net,我想使用ASPX页面的错误事件来捕获该页面中发生的任何未处理的异常,并设置label控件的文本以向用户显示错误(我意识到这可能不是推荐的最佳做法,这是一种快速而肮脏的做法) 因此,在错误事件中,我会有如下结果: Me.lblError.Text = Server.GetLastError.Message 但是,当我运行这个程序并且出现错误时,我可以通过设置断点看到这一行正在执行,但是屏幕总是以空白结束。在设置文本后,我尝试了使用和不使用Server.ClearError,但结果是一样的 难道这

我想使用ASPX页面的错误事件来捕获该页面中发生的任何未处理的异常,并设置label控件的文本以向用户显示错误(我意识到这可能不是推荐的最佳做法,这是一种快速而肮脏的做法)

因此,在错误事件中,我会有如下结果:

Me.lblError.Text = Server.GetLastError.Message
但是,当我运行这个程序并且出现错误时,我可以通过设置断点看到这一行正在执行,但是屏幕总是以空白结束。在设置文本后,我尝试了使用和不使用Server.ClearError,但结果是一样的

难道这不可能吗

更新 请参阅下面的正确答案以及本文:

通常我会在Global.asax级别看到这一点,并重定向到错误页面。而不是在页面本身上处理。

您不能在此事件中影响Label控件的Text属性。这与ASP.NET的页面执行模型有关

但是,您仍然可以将信息写入屏幕。可以使用Response.Write执行此操作。下面是一个示例:

protected void Page_Error(object sender, EventArgs e)
{     
    Exception exc = Server.GetLastError();        
    Response.Write(exc.Message);
    Server.ClearError();
}

您应该考虑.AXA.

中的全局错误处理程序。这似乎是正确的答案,写到您的控件似乎是绝对不可能的。我在任何地方都找不到明确的说明,但似乎是这样。所以很明显,你必须尝试…抓住一切,在ASPX页面的任何地方。如果有人碰巧知道一个聪明的解决方法,请发布它。它明确地说:“页面级处理程序会将您返回到页面,但页面上不再有任何内容,因为没有创建控件实例。要向用户提供任何信息,您必须将其专门写入页面。”您可以在以下MSDN上找到此信息:。希望这能有所帮助。这篇文章写得很好,能解释发生了什么。