-1

我的 asp.net 网站有一个常见的自定义错误页面,因为它很常见,它显示在每个错误上发生的错误。

注意:解决方案必须基于会话,我当然不希望任何用户显示在任何其他用户的系统上发生的错误。

4

3 回答 3

-1

您使用 IIS 还是 Apache?

对于 Apache 配置 Apache 以提供定制的错误页面非常容易;httpd.conf 文件中有一段专门用于此。每个错误只需要一个指令即可实现。如果您打开 conf 文件并向右滚动到几乎第二部分的最底部,您将看到需要编辑的部分。默认情况下,这些指令被注释掉,但您需要做的就是取消注释每个指令,然后更改路径以指向您自己的错误页面。

错误文档 404 /errordocs/404error.html

对于 IIS IIS 6:编辑网站或虚拟目录,然后是用户定义的错误。在那里您可以编辑所有错误文件并更改为用户定义的 asp.net 文件。

IIS 7:详细错误消息请参阅:http: //blogs.msdn.com/b/rakkimk/archive/2007/05/25/iis7-how-to-enable-the-detailed-error-messages-for-the-网站浏览时来自客户端browsers.aspx

于 2012-09-20T07:36:26.207 回答
-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

这将在使用该基类的所有页面上触发,并传递最后一个“服务器”错误(这将是用户导致的错误),将所有详细信息存储在会话中并将其传递到您的错误页面。然后你就可以随心所欲了。

于 2012-09-20T07:30:23.837 回答
-1

不知道你想做什么。您必须捕获页面内发生的代码错误,并在该页面上显示消息 - 留在页面上 - 如果可能,请让用户有机会更正它。如果您的错误超出了您的尝试/捕获并失控,请记录并修复它。

您可以向用户显示的唯一错误是“未找到页面”。

你可以得到最后一个错误Exception LastOneError = Server.GetLastError();

在那里您可以阅读有关错误的更多信息:如何在我的 ASP.NET 应用程序中创建一个“通用错误”页面,以便它处理在提供该页面本身时触发的错误?

以及如何判断我的 global.asax 捕获的错误是否显示在用户的屏幕上

于 2012-09-20T07:42:34.770 回答