如何在Server.Transfer之后捕获异常(不使用customErrors)?

时间:2012-05-10 07:59:31

标签: c# asp.net redirect try-catch server.transfer

我将简化示例,因此我们假设我们有Page APage BPage C

  1. Page Abase.OnInit()上的page B匹配,
  2. Page B会抛出异常,并会被Server.Transfer重定向到Page C
  3. Page C有一个try / catch,应该捕获异常。
  4. 我一直在尝试Server.GetLastError(),没有带来任何东西(GetLastErros为空)。如何解决问题并在<customErrors>中强加<{1}} 处理

    有趣的是,当我在web.config中调试时,我可以看到变量Page C,它已正确设置。

    图片 - &gt; http://www.picfront.org/d/8EeT

    非常感谢。

2 个答案:

答案 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
}