Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Gestion des erreurs dans Classic Asp sans erreur de délai d'attente

Je crois que votre question est "Comment piéger l'erreur Script Timeout et l'enregistrer dans la base de données". Alors la réponse est que vous ne pouvez pas le faire avec On error resume next.

Le problème est que ASP a déterminé que votre script a été exécuté trop longtemps. Pour que votre code intercepte et enregistre l'erreur, votre code doit continuer, mais c'est exactement ce que l'ASP a déterminé ne devrait pas se produire puisque son temps est écoulé.

De plus, en général, à moins que vous ne puissiez continuer à faire quelque chose de sensé (et cela n'inclut pas la journalisation) dans votre script, il est inutile d'essayer d'utiliser On Error Resume Next pour piéger l'erreur.

Au lieu de cela, créez un nouveau script ASP qui doit s'exécuter chaque fois que vous obtenez une erreur de script (cela inclura une erreur de délai d'expiration du script). Dans le gestionnaire IIS, ouvrez la boîte de dialogue des propriétés de votre application et sélectionnez l'onglet Erreurs personnalisées. Modifiez le gestionnaire de l'erreur HTTP 500;100 et remplacez-le par l'URL et le chemin de ce script ASP.

Vous pouvez maintenant placer votre code de journalisation des erreurs dans ce script ASP. Vous pouvez accéder à l'erreur renvoyée par la page ASP défaillante en accédant à la méthode Server.GetLastError. Vous pouvez également configurer cette page pour envoyer quelque chose de convivial à l'utilisateur.