ASP.NET自定义错误页面 - Server.GetLastError()为null

ASP.NET自定义错误页面 - Server.GetLastError()为null

我为我的应用程序设置了自定义错误页面:

<customErrors mode="On" defaultRedirect="~/errors/GeneralError.aspx"/>

在Global.asax,Application_Error()中,以下代码用于获取异常详细信息:

  Exception ex = Server.GetLastError();
  if (ex != null)
    {
        if (ex.GetBaseException() != null)
            ex = ex.GetBaseException();
    }

当我到达我的错误页面(〜/ errors / GeneralError.aspx.cs)时,Server.GetLastError()为null

有没有什么办法可以在错误页面上获取异常详细信息,而不是在Global.asax.cs中?

Vista / IIS7上的ASP.NET 3.5



叮当猫咪
浏览 915回答 3
3回答

慕桂英546537

NailItDown和Victor所说的组合。首选/最简单的方法是使用Global.Asax存储错误,然后重定向到自定义错误页面。Global.asax:&nbsp; &nbsp; void Application_Error(object sender, EventArgs e)&nbsp;{&nbsp; &nbsp; // Code that runs when an unhandled error occurs&nbsp; &nbsp; Exception ex = Server.GetLastError();&nbsp; &nbsp; Application["TheException"] = ex; //store the error for later&nbsp; &nbsp; Server.ClearError(); //clear the error so we can continue onwards&nbsp; &nbsp; Response.Redirect("~/myErrorPage.aspx"); //direct user to error page}此外,您需要设置web.config:&nbsp; <system.web>&nbsp; &nbsp; <customErrors mode="RemoteOnly" defaultRedirect="~/myErrorPage.aspx">&nbsp; &nbsp; </customErrors>&nbsp; </system.web>最后,根据您存储在错误页面中的异常,执行您需要的任何操作:protected void Page_Load(object sender, EventArgs e){&nbsp; &nbsp; // ... do stuff ...&nbsp; &nbsp; //we caught an exception in our Global.asax, do stuff with it.&nbsp; &nbsp; Exception caughtException = (Exception)Application["TheException"];&nbsp; &nbsp; //... do stuff ...}
打开App,查看更多内容
随时随地看视频慕课网APP