2010-03-15 7 views

Répondre

2

Vérifiez le Server.GetLastError() et vérifiez également le Response.StatusCode pour savoir pourquoi la page a été appelée.

Si vous définissez l'élément customErrors sur la web.config la page defautRedirect ne sera appelée lorsqu'un occus d'état inconnu, qui est, si vous spécifiez des pages personnalisées pour les codes d'état 404 et 403, par exemple, votre page foo.aspx ne sera appelé quand un statut différent apparaît.

0

code:

if (!string.IsNullOrEmpty(Request["aspxerrorpath"])) { 
    .... 
} 

J'espère quelque chose de mieux?

0
void Application_Error(object sender, EventArgs e) 
{ 
    HttpContext ctx = HttpContext.Current; 
    Exception exception = ctx.Server.GetLastError(); 
    ctx.Server.ClearError(); 
    ctx.Server.Transfer("Foo.aspx?ERROR" + exception.Message); 

} 

Cette méthode démarrera avant que vous n'alliez sur Foo.aspx, ce qui vous permettra de constater que vous venez d'une erreur et non d'une redirection. Vous pouvez ensuite ajouter une variable QueryString à l'URL afin que Foo.aspx puisse fonctionner avec ces données.

Vous ne savez pas quel est votre objectif final, mais si vous essayez de personnaliser le message d'erreur s'affiche en fonction de l'exception, vous pouvez le gérer de cette façon.

+0

Ça a l'air vraiment bien, mais j'essaie de comprendre comment cela répond à ma question? – lance

+0

Je l'ai mis à jour, s'il vous plaît vérifier. –

+0

GetLastError() renverra null si Response.Redirect ("Foo.aspx") a été utilisé pour envoyer l'utilisateur à Foo.aspx? Autrement dit: GetLastError() ne renvoie que des exceptions _unhandled_? Il retourne seulement des exceptions que .NET (et pas mon code) attrapé? – lance

Questions connexes