我在asp.net中有web应用程序。 我必须实现自定义错误页面。 意味着发生任何错误(运行时)。 我必须显示errorpage.aspx 上的异常和堆栈跟踪,我应该从母版页还是页级处理以及如何处理。asp.net中的自定义错误页面
<customErrors mode="On" defaultRedirect="~/Error_Page.aspx"></customErrors>
我在asp.net中有web应用程序。 我必须实现自定义错误页面。 意味着发生任何错误(运行时)。 我必须显示errorpage.aspx 上的异常和堆栈跟踪,我应该从母版页还是页级处理以及如何处理。asp.net中的自定义错误页面
<customErrors mode="On" defaultRedirect="~/Error_Page.aspx"></customErrors>
您可以使用Server.GetLastError访问错误;
var exception = Server.GetLastError();
if (exception != null)
{
//Display Information here
}
是这种有效的方式..我必须在每个页面上面放置..应该我只处理主页上的任何错误.. – lax
您可以在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;
}
使用Elmah DLL与漂亮的UI显示您的错误。您可以使用此DLL维护日志。
请不要使用重定向作为显示错误消息的手段,因为它会中断HTTP。如果发生错误,服务器返回适当的4xx或5xx响应,而不是301重定向到200 OK响应是有意义的。我不知道为什么Microsoft将此选项添加到ASP.NET的自定义错误页面功能,但幸运的是,您不需要使用它。
我建议使用IIS管理器为您生成web.config文件。至于处理错误,请打开您的Global.asax.cs
文件并为Application_Error
添加方法,然后从中调用Server.GetLastError()
。
Dai我必须在ErrorPage.aspx上编写有关错误的详细信息和堆栈跟踪 – lax
在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
}
由于在触发Application_Error事件时Session对象不可用,因此无法使用。 – Arthur
如果您设置自定义错误关闭它只会显示你在ASP默认异常页面错误和堆栈跟踪。不知道这是否会为你做? – middelpat
我必须写详细信息和关于ErrorPage.aspx上的错误的堆栈跟踪从用户的角度来看 – lax