我将简化示例,因此我们假设我们有Page A
,Page B
和Page C
Page A
与base.OnInit()
上的page B
匹配,Page B
会抛出异常,并会被Server.Transfer
重定向到Page C
。Page C
有一个try / catch,应该捕获异常。我一直在尝试Server.GetLastError()
,没有带来任何东西(GetLastErros为空)。如何解决问题并在<customErrors>
中>强加<{1}} 处理?
有趣的是,当我在web.config
中调试时,我可以看到变量Page C
,它已正确设置。
图片 - &gt; http://www.picfront.org/d/8EeT
非常感谢。
答案 0 :(得分:0)
您的 Page C 对 Page B 中的例外情况一无所知。在那里处理 Page B 中引发的异常。
我猜您在 Page C 中看到的$exception
是此页面堆栈跟踪的非公开成员。
要让 Page C 充当通用错误处理程序,您必须移交有关异常的信息。您可以在查询字符串参数中执行此操作,但我怀疑这将是一个易于维护的解决方案。
也许使用母版页,提供通用事件处理程序可以提供更好的解决方案,而不是专用页面,但我没有尝试过。
答案 1 :(得分:0)
您是否在Web Page/Content Page/BasePage
中使用了以下活动。
protected override void OnError(EventArgs e)
{
base.OnError(e);
}
您是否在Application_Error
文件中使用了Global.asax
?
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}