2010-02-05 7 views
1

J'utilise un UpdatePanel et j'enregistrer un gestionnaire pour endRequest pour attraper les erreurs:ne peut pas attraper une erreur sur assync postback (page de asp.net avec UpdatePanel)

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

Sur le serveur une exception est levée pour tester la côté client. Le problème est que dans IE et FireFox EndRequestHandler n'est jamais appelé! Cela fonctionne comme prévu dans Opera et Safari.

Sur une page simple avec peu de contrôles, il fonctionne comme prévu dans tous les navigateurs. Ce que j'ai découvert avec Firebug est que la réponse est Content-length: 67, mais il n'y a pas de réponse (onglet vide pour la réponse)! La réponse attendue est

53 | error | 500 | Référence d'objet non définie sur une instance d'un objet. |

par exemple. Je n'ai pas débogué la bibliothèque ajax avec précision, mais ce que j'ai vu, c'est que du code s'exécute pour préparer l'événement pageLoading (peut-être parce qu'il ne peut pas détecter l'erreur?), Mais il n'y a aucune information pour updatepanels erreur se produit en essayant d'utiliser un objet pour updatepanels qui est null. L'erreur est interceptée par un bloc try-finally. Donc, il peut y avoir quelque chose sur le serveur (dans la page asp.net) qui cause le problème, mais je ne pouvais pas le trouver. Quelqu'un pourrait-il m'aider?

Répondre

0

Le même problème existe toujours avec la dernière MS Ajax.

j'ai réussi à résoudre le problème sur le serveur:

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

Ainsi, je pense que quelque chose sur le côté serveur est erroné.

Questions connexes