我在asp.net中有web应用程序。 我必须实现自定义错误页面。 表示是否发生任何错误(运行时)。 我必须在errorpage.aspx上显示异常和堆栈跟踪 我应该从母版页或页面级别处理以及如何处理。
<customErrors mode="On" defaultRedirect="~/Error_Page.aspx"></customErrors>
答案 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
}