从Global.asax显示警报消息框(在Application_Error事件上)

时间:2010-04-12 13:26:27

标签: .net asp.net vb.net error-handling global-asax

通常我只是重定向到Application_Error事件中的自定义错误页面,但是我有一个特定的错误,我想在用户仍然在触发错误的页面上时显示警告消息。我怎样才能做到这一点?

我对modalpopup或任何其他类型的错误消息持开放态度,我只是想确保用户停留在他们遇到错误的页面上。

感谢任何想法。

这是参考这个帖子:A potentially dangerous Request.Form value was detected: Dealing with these errors proactively, or after the fact

以下是我目前正在使用的代码:

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
    'Code that runs when an unhandled error occurs
    Try
        Dim err As Exception = Server.GetLastError
        If err.Message IsNot Nothing Then
            If err.Message = "The client disconnected." Then
                Dim LogError As New LogError(Server.GetLastError, Session, Request)
                LogError.LogError()
                Response.Redirect("~/TimeoutPage.aspx?id=2")
            ElseIf err.Message.Contains("dangerous Request.Form value") Then
                'Response.Redirect("~/MyInputErrorPage.aspx")
            'Instead the above redirect, I'd like to show the user an alertbox or something similar to explain the error to them
            Else
                Dim LogError As New LogError(Server.GetLastError, Session, Request)
                LogError.LogError()
                Response.Redirect("~/MyErrorPage.aspx")
            End If
        End If
    Catch ex As Exception
    End Try

2 个答案:

答案 0 :(得分:0)

如果您知道错误发生的位置,请将其包装在try-catch块中,并在页面加载后的代码中处理它。

如果你想要一个Javascript样式的模态弹出错误,在catch中,向页面上的隐藏变量写出一个标志值/错误消息,并在html文档加载中处理它。

答案 1 :(得分:0)

我无法找到一种简单的方法来做到这一点,所以我只为这些类型的错误创建了新的错误页面,并在Application_Error事件中捕获到特定错误时重定向到该页面(作为我的代码)第一篇文章表明。)