2009-09-17 13 views
0

Dans Global.asax, existe-t-il un moyen de gérer élégamment les délais SQL et d'afficher un message sur la page de requête expliquant l'erreur? Je sais que Global.asax a les événements Application_Error et Error, mais je ne suis pas sûr (le cas échéant) lequel je pourrais utiliser pour accomplir ceci. En relation, puis-je accéder à l'instance de page qui a déclenché l'erreur traitée par Global.asax?Puis-je afficher une alerte de Global.asax sur une page qui rencontre un délai SQL?

Merci!

Répondre

1

En Global.asax.vb

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 

     If TypeOf (Context.Error.GetBaseException) Is System.Data.SqlClient.SqlException Then 

      Dim ex As System.Data.SqlClient.SqlException = Context.Error.GetBaseException 

      If (ex.Errors.Count = 1 And ex.Number = -2) Then 

       Server.ClearError() 

       Response.Redirect(Context.Request.Url.ToString() & "?error=MessageHere") 

      End If 


     End If 

End Sub 

En C#

public void Application_Error(object sender, EventArgs e) 
{ 
    if ((Context.Error.GetBaseException) is System.Data.SqlClient.SqlException) { 
        
        System.Data.SqlClient.SqlException ex = Context.Error.GetBaseException; 
        
        if ((ex.Errors.Count == 1 & ex.Number == -2)) { 
            
            Server.ClearError(); 
                
            Response.Redirect(Context.Request.Url.ToString() + "?error=MessageHere"); 
            
        } 
    } 
} 
+0

J'ai fini par faire quelque chose de similaire à ce que vous juste posté, sauf au lieu de Response.Redirect, j'ai utilisé Server.Transfer ("CustomErrorPage.aspx", true). Nous avons beaucoup trop de pages à rediriger vers la page d'erreur, donc nous avons à la place une seule page d'erreur qui affiche un message. Merci! – Pwninstein

+0

Je suis heureux d'avoir pu aider. Nous utilisons le response.redirect à une page d'erreur, parce que nous avons semblé avoir quelques problèmes avec server.transfer dans certaines circonstances. – Jim

0

Vous pouvez utiliser les erreurs personnalisées web.config as explained here

+0

Je n'y avais pas pensé que, bien que, doesn la collection d'erreurs personnalisées ne concerne que les erreurs liées à HTTP (vu qu'il y a un attribut StatusCode pour chaque élément Error)? – Pwninstein

+0

Je pense que l'attribut defaultRedirect gère toutes les erreurs mais je peux me tromper. Cette question semble répondre à votre requête initiale: http://stackoverflow.com/questions/1227632/asp-net-2-0-best-practice-for-writing-error-page – Locksfree