从Page_Error事件重新加载ASP.NET页面

时间:2014-04-16 19:20:45

标签: asp.net vb.net

我们的ASP.NET页面在UpdatePanel中使用大量第三方控件。有时他们会抛出错误,而不是在Page_Error事件的任何其他地方捕获。发生这种情况时,我们需要刷新页面。有没有办法从错误事件中执行此操作?我们试图将JS发送回客户端:

Protected Sub Page_Error(sender As Object, e As EventArgs) Handles Me.Error

    Dim ex = Server.GetLastError

    If ex.Message.Contains("Specific string from controls' error") Then 
        Server.ClearError()
        ScriptManager.RegisterStartupScript(Me, Me.GetType, "JSCode", "location.reload(true);", True)
    End If

End Sub

但这不起作用,抛出了自己的错误:

  

错误:Sys.WebForms.PageRequestManagerServerErrorException:未知   处理服务器上的请求时出错。状态   从服务器返回的代码是:500

我在事件查看器中找不到任何相关内容。

这可以重装吗?

2 个答案:

答案 0 :(得分:1)

你可能会因为Page_Error而无法做一个Response.Redirect,我认为你不能提交javascript。

答案 1 :(得分:0)

正如您的评论中所提到的,它是一个ajax错误。因此,此处不会呈现服务器响应。客户端浏览器期望响应是数据或部分视图/用户控件或类似的块,而不是完整的html页面。但是,使用此异常时,响应将作为完整的html页面返回(在本例中为错误页面)。结果,客户端无法正确处理该ajax响应。您必须捕获该ajax错误事件并在该处理程序中重定向/刷新。

您可以查看我的帖子here