我的asp.net网站有一个常见的自定义错误页面,因为它常见于每个错误上显示我想要找到的最后一个错误代码,并重定向到我的自定义错误页面,以便我能够正确显示根据发生的错误发送消息。
注意:解决方案必须基于会话,我不希望任何用户显示当然在任何其他用户的系统上发生的错误。
答案 0 :(得分:-1)
我建议扩展UI.Page类并将该类用于所有页面。
在该课程中(我知道vb不是c#但原理相同且易于转换)请使用以下代码:
Public Class _PageBase
Inherits System.Web.UI.Page
#Region "Page Functions"
Private Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Error
Session("error_StackTrace") = Server.GetLastError.StackTrace.ToString
Session("error_Message") = Server.GetLastError.Message.ToString
Session("error_Page") = Request.Url.ToString
Session("error_Source") = Server.GetLastError.Source.ToString
Server.ClearError()
Response.Redirect("~/errors/Error.aspx")
End Sub
#End Region
End Class
这将在使用该基类的所有页面上触发,并传递最后一次“服务器”错误(这将是用户导致的错误),将所有详细信息存储在会话中并将其传递到您的错误页面。然后你可以按照自己的意愿去做。
答案 1 :(得分:-1)
您使用IIS还是Apache?
对于Apache 配置Apache以提供自定义错误页面非常容易;有一段专门用于此的httpd.conf文件。每个错误只需要一个指令即可实现。如果您打开conf文件并向下滚动到第二部分的最底部,您将看到需要编辑的部分。 默认情况下,这些指令已被注释掉,但您需要做的就是取消对每个指令的注释,然后将路径更改为指向您自己的错误页面。
ErrorDocument 404 /errordocs/404error.html
对于IIS IIS 6:编辑网站或虚拟目录,然后是Userdefinded Error。 在那里,您可以编辑所有错误文件并更改为用户定义的asp.net文件。
IIS 7: 详细错误消息请参阅: http://blogs.msdn.com/b/rakkimk/archive/2007/05/25/iis7-how-to-enable-the-detailed-error-messages-for-the-website-while-browsed-from-for-the-client-browsers.aspx
答案 2 :(得分:-1)
不知道你想做什么。您必须捕获它们在页面内发生的代码上的错误,并在该页面上显示消息 - 保持在页面上 - 如果可能,则让用户有机会更正它。如果您的错误超出了try / catch并且失控,请记录并修复它。
您可以向用户显示的唯一错误是“未找到的网页”。
您可以将最后一个错误设为Exception LastOneError = Server.GetLastError();
在那里,您可以阅读有关错误的更多信息:How do I make a "generic error" page in my ASP.NET application so that it handles errors triggered when serving that page itself?
和How to tell if an error captured by my global.asax was displayed on the screen of the user