3

J'ai toujours utilisé les deux bits de code suivants (qui fonctionnent) pour attraper Ajax asyncPostBackError s.ScriptManager1.AsyncPostBackErrorMessage ne pas afficher le message d'erreur

<asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError" /> 

et

protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e) 
{ 
ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message; 
} 

Mais maintenant, même si l'exception non gérée a été pris dans cette fonction de gestionnaire d'événements et AsyncPostBackErrorMessage été réglée avec le message d'exception, je suis toujours obtenir la même erreur de déclaration dans la page dans une zone d'alerte, peu importe ce que le message d'exception, en disant:

Error: Sys.WebForms.PageRequestManagerParserErrorException: The message recieved from the server could not be parsed. Common causes for this error are when the response is modified by calls to the Respnse.Write() .... 

l'erreur est la même erreur que vous obtiendriez si vous aviez ununhandledexception et vous n'avez pas connecté la méthode de gestion d'événement Scriptmanger'sasyncPostBackError.

Peu importe ce que je fais, je reçois la même erreur. Qu'est-ce qui causerait ça?

Répondre

0

Il semble que je suis confronté au même problème après la mise à niveau de VS 2005 à VS 2008. J'utilise ce code:

if (e.Exception is LandingPageUIExceptionInvalidMSISDN) 
{ 
    msgresolved = "ErrorPopUpInvalidNumber"; 
    ScriptManager.GetCurrent(Page).AsyncPostBackErrorMessage = msgresolved; 
} 

afin de gérer l'exception et afficher un message d'erreur approprié. Le AsyncPostBackErrorMessage est correctement attribuée, mais à côté client lorsque le suivant est exécuté en JavaScript:

var ErrorPopUpDivID = e.get_error().message; 
alert(ErrorPopUpDivID); 

Le ErrorPopUpDivID est pas ce que j'asigned à AsyncPostBackErrorMessage. Cela fonctionnait aussi pour moi. Je vais essayer de comprendre s'il pourrait s'agir d'un problème .NET 3.5.

Enfin, les 3 lignes de JavaScript a résolu mon problème suivant:

var ErrorPopUpDivID = e.get_error().message; 
var re = new RegExp("Sys.*: ", "g"); 
ErrorPopUpDivID = ErrorPopUpDivID.replace(re, ""); 
2

Cela peut être un coup de feu dans l'obscurité, mais peut-être la gestion des exceptions mondiale a lieu après votre fonction ScriptManager1_AsyncPostBackError est appelée. Si cette gestion des exceptions effectue une server.transfer sur une page d'erreur, le code HTML renvoyé ne sera pas analysable par le gestionnaire de scripts.

Cela se produisait sur l'un de mes sites et a été résolu en ajoutant Server.ClearError() à la fonction ScriptManager1_AsyncPostBackError. Cela a empêché l'appel de la fonction Global.Application_Error.

+0

J'ai eu ce problème exact, ci-dessus réponse résolu pour moi. – Culme

+0

Wow, merci, c'était tout. Cela aurait pu prendre des heures pour se finaliser. – madamission