1

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

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

5 回答 5

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;
}
于 2012-12-12T09:59:26.767 回答
2

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

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

于 2012-12-12T09:59:50.270 回答
1

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

于 2012-12-12T09:59:42.737 回答
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
}
于 2012-12-12T10:02:50.597 回答
0

您可以使用 Server.GetLastError 访问错误;

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

更多信息:HttpServerUtility.GetLastError 方法

于 2012-12-12T09:58:51.150 回答