在assync回发时无法捕获错误(带有updatepanel的asp.net页面)

时间:2010-02-05 09:26:11

标签: asp.net ajax updatepanel

我使用updatepanel并为endRequest注册一个处理程序以捕获错误:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

在服务器上抛出异常来测试客户端。问题是在IE和FireFox中永远不会调用EndRequestHandler!它在Opera和Safari中按预期工作。

在一个包含很少控件的简单页面上,它可以在所有浏览器中按预期工作。我在Firebug中发现的是响应是Content-length:67,但是没有响应(响应的空标签)!预期的反应是

  

53 | error | 500 |对象引用未设置为对象的实例。|

例如。

我没有精确调试ajax库,但我看到的是有些代码运行以准备pageLoading事件(可能是因为它无法检测错误?),但是没有来自响应的updatepanels的信息和错误试图使用一个对象的updatepanels为null。该错误由try-finally块捕获。

因此,服务器(在asp.net页面中)可能会出现导致问题的内容,但我找不到它。有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

  1. 响应的空标签是Firebug的错误。我也碰到了它。
  2. 尝试更新到最新版本的MS Ajax:http://ajax.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35895

答案 1 :(得分:0)

最新的MS Ajax仍然存在同样的问题。

我设法解决了服务器上的问题:

protected override void OnError(EventArgs e)
{
    base.OnError(e);
    if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
    {
        Response.Clear();
        Response.Write("53|error|500|Bad.|");
        Response.Flush();
    }
}

因此,我认为服务器端的某些内容是错误的。