2008-11-05 5 views
2

J'utilise jQuery pour gérer tous mes besoins ajax pour un site ASP.NET codé en VB. Lorsque j'utilise la fonction $ .ajax intégrée pour POST à ​​une fonction code-behind et qu'il existe une exception, il quitte simplement la fonction et affiche une erreur du côté client. En plus de rendre difficile le débogage lors du codage, le plus gros problème est que la fonction Application_Error dans Global.asax ne se déclenche pas lorsque ces exceptions se produisent. Cela rend presque impossible le suivi des erreurs de production. Pourquoi ne pas faire exploser Application_Error? La réponse est-elle d'encapsuler la fonction code-behind dans une instruction Catch?Comment intercepter une exception dans VB.NET lors de l'utilisation de jQuery ajax

jQuery fonction ajax:

$.ajax({ 
    type: "POST", 
    url: "page.aspx/GetData", 
    data: "{'param':'" + param_value + "'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 

    success: function(msg) { 
     processData(msg); 
    }, 

    error: function(XMLHttpRequest, textStatus, errorThrown) { 
     alert("Error: " + textStatus + " - " + errorThrown); 
    } 
}); 

fonction VB.NET:

<Script.Services.ScriptMethod()> _ 
<WebMethod()> _ 
Public Shared Function GetData(ByVal param As Integer) As String 
    'Parse some data 
    Return data 
End Function 
+0

Y a-t-il une bonne raison pour laquelle vous voulez gérer l'erreur dans l'erreur Application_principale plutôt que dans la méthode GetData elle-même? –

+0

Pour plus de simplicité. Je n'ai qu'à écrire le code de gestion des exceptions une fois au lieu d'écrire un bloc Catch pour chaque méthode Web. –

Répondre

0

Avec .Net 3.5, vous pouvez tirer dans le ScriptManager object et enregistrer votre javascript avec elle, cela permet de gérer .Net les scripts (ce n'est pas jsut pour MS Ajax, ça marche avec des librairies tierces), ça pourrait être une solution.

1

J'ai trouvé un travail. Bien que je n'ai pas trouvé un moyen d'obtenir directement l'erreur pour déclencher l'événement Application_Error, j'ai découvert une propriété sur l'objet jQuery XMLHttpRequest qui contient le texte d'exception réel.

Voici un exemple qui montre l'erreur dans une alerte:

error: function(XMLHttpRequest, textStatus, errorThrown) { 
    alert("Error: " + XMLHttpRequest.responseText); 
} 

Une autre idée est de soumettre l'erreur via AJAX à une méthode Web qui gère toute la logique d'événement d'erreur.

Questions connexes