2010-03-18 107 views
3

在我的web应用程序,我已经配置了我的web.config文件中设置的customErrors为ON,所以在这里它是:自定义错误处理Asp.Net

<customErrors mode="On" defaultRedirect="Error.aspx"> 
    <error statusCode="403" redirect="Error.aspx" /> 
    <error statusCode="404" redirect="Error.aspx" /> 
    </customErrors> 

为了解释propouses我只拍摄了403和404错误(显然defaultRedirect)。但我想在页面上获得有关错误的更多详细信息:Error.aspx莫名其妙;但不会为每种错误创建每个页面。有没有办法在我的错误页面(Error.aspx)中包含某些代码来获取引发该错误的详细信息?

PD。我正在使用C#。

回答

2

只需添加到会话和应用别人已经建议,这是你如何使用什么门道建议显示错误的Error.aspx页:

protected void Application_Error(object sender, EventArgs e) 
     { 
      //Get last error 
      Exception ex = Server.GetLastError(); 
      ex = ex.GetBaseException(); 

      //display error to user 
      Context.AddError(ex); 
      Server.Transfer("Error.aspx", true); 

     } 

在Error.aspx页面放Body标签内的代码:

<p> 
    <i><%= Context.Error.InnerException.Message.ToString() %></i> 
</p> 
+0

非常感谢!正是我在找的东西。 – lidermin 2010-03-18 19:11:31

+0

谢谢!正是我需要的! – Jonathan 2011-06-27 05:00:34

0

顺便说一句,你有没有尝试过使用ELMAH。提供出色的日志记录和错误报告是最容易的。

编辑: - 我知道这与Error.aspx没有关系。我只是提出了一种记录和报告异常的好方法。

0

在大多数情况下,您可以使用Server.GetLastError()来检索导致重定向的错误。

如果在几乎同一时间遇到两个错误,但是一个人的连接速度比另一个快,那么您可能会遇到竞争状态。

0

您可以通过处理Global.asax中的Application_Error事件来捕获和记录错误。

protected void Application_OnError(object sender, EventArgs e) 
{ 
    // Get the last error 
    Exception exception = Server.GetLastError(); 

    // Do something with the error here 
    ErrorLogger.Log(exception); 
} 

有关错误日志,你可能要考虑使用类似ELMAHLog4net