【问题标题】:Custom error handling Asp.Net自定义错误处理 Asp.Net
【发布时间】:2011-01-29 04:00:38
【问题描述】:

在我的 Web 应用程序中,我已将 web.config 文件配置为将 customerrors 设置为 ON,所以它是:

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

为了解释提案,我只捕获了 403 和 404 错误(显然还有 defaultRedirect)。但我想在页面上获得更多关于错误的细节:Error.aspx不知何故;但不是为每种错误创建每个页面。有没有办法在我的错误页面 (Error.aspx) 中包含某些代码以获取引发该错误的详细信息?

PD。我正在使用 C#。

【问题讨论】:

    标签: c# asp.net web-config


    【解决方案1】:

    只是为了添加到对话中并应用其他人已经建议的内容,这就是您可以使用 Mun 建议在 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>
    

    【讨论】:

    • 非常感谢!!正是我想要的。
    • 谢谢!正是我需要的!
    【解决方案2】:

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

    编辑:- 我知道这与 Error.aspx 无关。我只是建议一种记录和报告异常的好方法。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这不能回答问题。
      【解决方案4】:

      您可以通过处理 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 之类的东西。

      【讨论】:

        猜你喜欢
        • 2010-12-07
        • 2010-11-13
        • 2010-12-24
        • 2010-09-30
        • 2016-04-10
        • 2010-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多