【发布时间】:2014-04-16 19:20:44
【问题描述】:
我们的 ASP.NET 页面在 UpdatePanel 中使用了一堆 3rd 方控件。有时他们会抛出错误,除了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
我在事件查看器中找不到任何相关内容。
可以重新加载吗?
【问题讨论】:
-
错误是什么?而且你的 if 语句还没有完成......
-
@the_lotus 在实际代码中
if中有一个条件,我只是将其保留为通用的。 MS Ajax 库引发的错误是通用的“500”我在事件查看器中看不到任何与之对应的内容。看起来在页面生命周期的这一点上RegisterStartupScript是不允许的(我会更新问题以使其更清楚) -
你可能会被困在做一个 Response.Redirect
-
@the_lotus 你能把它作为答案发布吗?我最初没有尝试过,因为普通的 Response.Redirect 在更新面板中不起作用。但它似乎在这种情况下工作得很好。