我想使用ASPX页面的Error事件来捕获该页面中发生的任何未处理的异常,并设置标签控件的文本以向用户显示错误(我意识到这可能不是推荐的最好的做法,这是一个快速和肮脏的。)
所以,在错误事件中,我会有类似的东西:
Me.lblError.Text = Server.GetLastError.Message
然而,当我运行此错误并且发生错误时,我可以通过设置断点看到此行正在执行,但屏幕始终为空白。我在设置文本后尝试使用和不使用Server.ClearError,但结果是相同的。
不应该这样吗??
请参阅下面的正确答案以及本文:
http://msdn.microsoft.com/en-us/library/ed577840.aspx
答案 0 :(得分:1)
通常我会在Global.asax级别看到这个,并重定向到错误页面。而不是在页面上处理。
答案 1 :(得分:1)
您不能在此事件中影响Label控件的Text属性。这与ASP.NET的页面执行模型有关。
但是,您仍然可以将信息写入屏幕。您可以使用Response.Write执行此操作。以下是一个示例:
protected void Page_Error(object sender, EventArgs e)
{
Exception exc = Server.GetLastError();
Response.Write(exc.Message);
Server.ClearError();
}
但是,您应该考虑.asax中的全局错误处理程序。