Asp.net UpdatePanel跳过应用程序错误的超时错误-如何捕获它们?

Asp.net UpdatePanel跳过应用程序错误的超时错误-如何捕获它们?,asp.net,exception-handling,timeout,updatepanel,Asp.net,Exception Handling,Timeout,Updatepanel,使用一些具有大量UpdatePanel的遗留代码。我们遇到了一些问题,一些回发到UpdatePanel的时间超时(超过了默认的90秒限制),我想知道这是什么时候发生的 我们目前正在Global.asax.cs::Application\u Error中记录所有未处理的异常。如果我在更新面板上的回发中手动抛出一个错误,就可以捕捉到这个错误。如果我插入Thread.Sleep(100*1000),我将不会在Application_Error中看到任何内容,但在客户端上我将看到: Uncaught S

使用一些具有大量UpdatePanel的遗留代码。我们遇到了一些问题,一些回发到UpdatePanel的时间超时(超过了默认的90秒限制),我想知道这是什么时候发生的

我们目前正在Global.asax.cs::Application\u Error中记录所有未处理的异常。如果我在更新面板上的回发中手动抛出一个错误,就可以捕捉到这个错误。如果我插入Thread.Sleep(100*1000),我将不会在Application_Error中看到任何内容,但在客户端上我将看到:

Uncaught Sys.WebForms.PageRequestManagerServerErrorException: 
    Sys.WebForms.PageRequestManagerServerErrorException: 
        An unknown error occurred while processing the request on the server. 
        The status code returned from the server was: 500
据我所知,是服务器层抛出了错误,而不是应用程序本身,因此我们永远不会看到任何命中应用程序错误的东西。对吗


此外,除了在客户端中注意到错误,然后再执行另一个POST操作以记录错误之外,是否还有其他选项可以用于实际捕获/记录此错误?

我知道有两种方法:

Server-side:
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)  
{
    ScriptManager1.AsyncPostBackErrorMessage = "An error occurred during the request: " + e.Exception.Message; 
}

Client-side:
<script type="text/javascript">
    // Subscribe to the end request event of the update panel
    function pageLoad()  {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);  
    }

    // You can of course have this emit the error information to whatever control you want, I made up the Label1 object for demonstration purposes
    function onEndRequest(sender, args)  {
        var lbl = document.getElementById("Label1");
        lbl.innerHTML = args.get_error().message;
        args.set_errorHandled(true);
    }
</script>
服务器端:
受保护的无效ScriptManager1\u AsyncPostBackError(对象发送方,AsyncPostBackErrorEventArgs e)
{
ScriptManager1.AsyncPostBackErrorMessage=“请求期间发生错误:”+e.Exception.Message;
}
客户端:
//订阅更新面板的结束请求事件
函数pageLoad(){
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
}
//当然,您可以让它向您想要的任何控件发出错误信息,我创建了Label1对象用于演示
函数onEndRequest(发送方,参数){
var lbl=document.getElementById(“Label1”);
lbl.innerHTML=args.get_error().message;
args.set_errorHandled(true);
}
以下是一些文档:


您的第一个示例AsyncPostBackErrorMessage不会捕获这些超时错误。这是我发帖前最后一次尝试。。。它将捕获任何其他常规异常,但更新面板中回发调用的方法似乎继续正常运行并完成,而服务器会说“嘿,这花了太长时间,这里有一个500错误”I。。。我想是的。事实上,在这种情况下,这是我本地盒子上的IISExpress。