4

来自桌面背景,我不确定如何将捕获的异常传递给错误页面,以避免我的用户看到标准异常屏幕。

我的一般问题是如何将异常从页面 X 传递到 ASP.net 中的错误页面?

4

7 回答 7

6

我建议使用 web.config 中的 customErrors 部分:

   <customErrors mode="RemoteOnly" defaultRedirect="/error.html">
      <error statusCode="403" redirect="/accessdenied.html" />
      <error statusCode="404" redirect="/pagenotfound.html" />
   </customErrors>

然后使用ELMAH通过电子邮件发送和/或记录错误。

于 2008-09-24T19:47:50.043 回答
2

我使用的模式是将错误记录在 try/catch 块中(使用 log4net),然后执行 response.redirect 到一个简单的错误页面。这假设您不需要显示任何错误详细信息。

如果您需要单独页面上的异常详细信息,您可能需要查看 Server.GetLastError。我在 global.asax 中(在 Application_Error 事件中)使用它来记录未处理的异常并重定向到错误页面。

于 2008-09-24T19:49:53.437 回答
2

我们很幸运地在 Global.asax Application_Error 事件中捕获了异常,将它们存储在会话中,并重定向到我们的错误页面。或者,您可以对错误消息进行编码并将其传递到查询字符串中的错误页面。

于 2008-09-24T19:50:18.633 回答
2

您还可以从

Server.GetLastError();
于 2008-09-24T19:50:47.507 回答
1

使用 asp.net 中的自定义错误页面,您可以在 web.config中的customError部分找到它

于 2008-09-24T19:47:57.623 回答
1

我们在 Global.asax 文件中捕获异常,将其存储在 Session 中,然后将用户重定向到错误页面,在此我们获取 Session 变量的异常并向用户显示 Message 信息。

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        this.Session[CacheProvider.ToCacheKey(CacheKeys.LastError)] = ex;
    }

我们会在向用户显示之前记录错误消息。

于 2008-09-24T19:52:22.887 回答
0

我认为您可以使用global.asax -- Application_Exception处理程序来捕获异常,然后将其存储以显示在错误页面中。

但实际上,您的错误页面不应包含可能导致另一个错误的代码。它应该是简单的“糟糕!出了点问题”页面。

如果您需要有关错误的详细信息,请使用 Windows 的事件查看器或ELMAH或使用一些日志记录机制。

于 2008-09-24T19:46:10.483 回答