asp.net中的自定义错误页面

时间:2012-12-12 09:54:07

标签: c# asp.net custom-error-pages

我在asp.net中有web应用程序。 我必须实现自定义错误页面。 表示是否发生任何错误(运行时)。 我必须在errorpage.aspx上显示异常和堆栈跟踪 我应该从母版页或页面级别处理以及如何处理。

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

5 个答案:

答案 0 :(得分:4)

您可以在global.asax中处理它:

protected void Application_Error(object sender, EventArgs e)
{
   Exception ex = System.Web.HttpContext.Current.Error;
   //Use here
   System.Web.HttpContext.Current.ClearError();
   //Write custom error page in response
   System.Web.HttpContext.Current.Response.Write(customErrorPageContent);
   System.Web.HttpContext.Current.Response.StatusCode = 500;
}

答案 1 :(得分:2)

请不要使用重定向作为显示错误消息的方法,因为它会破坏HTTP。如果出现错误,服务器返回适当的4xx或5xx响应,而不是301重定向返回200 OK响应是有意义的。我不知道为什么Microsoft将此选项添加到ASP.NET的自定义错误页面功能中,但幸运的是您不需要使用它。

我建议使用IIS管理器为您生成web.config文件。至于处理错误,请打开Global.asax.cs文件并为Application_Error添加方法,然后从内部拨打Server.GetLastError()

答案 2 :(得分:1)

使用Elmah dll以漂亮的UI显示错误。您可以使用此DLL维护日志。

答案 3 :(得分:1)

在Global.asax

void Application_Error(object sender, EventArgs e) 
{    
    Session["error"] = Server.GetLastError().InnerException; 
}
void Session_Start(object sender, EventArgs e) 
{      
    Session["error"] = null;
}

在Error_Page Page_Load事件

if (Session["error"] != null)
{
    // You have the error, do what you want
}

答案 4 :(得分:0)

您可以使用Server.GetLastError;

访问错误
var exception = Server.GetLastError();
  if (exception != null)
    {
       //Display Information here
    }

有关详细信息:HttpServerUtility.GetLastError Method