2010-04-22 2 views
2

Je vois des questions similaires, mais il semble qu'il y ait eu un problème non lié. Dans 3.5, j'ai un gestionnaire d'erreur personnalisé qui enregistre les erreurs et redirige les utilisateurs. Mon web.config est mis en place en tant que tel:Les erreurs ne sont pas redirigées vers un gestionnaire Http si redirectMode = "ResponseRewrite"

<httpHandlers> 
       <add path="error.ashx" type="MySite.Tools.WebErrorLogger, MySite.Tools" verb="*"/> 
    </httpHandlers> 
    <customErrors mode="On" defaultRedirect="error.ashx" 
        redirectMode="ResponseRewrite"> 
    </customErrors> 

Lorsque redirectMode est réglé sur "ResponseRedirect", tout fonctionne très bien (mais Server.GetLastError() étant nul, mais qui semble être destiné)

Toutefois, lorsque en utilisant ResponseRewrite, mon gestionnaire n'est pas appelé et je vois les pages d'erreur par défaut ASP.Net. Une idée sur comment je pourrais faire ça?

(malheureusement je ne peux pas utiliser soit une page ASPX ou faire mon erreur de manipulation dans global.asax en raison d'autres contraintes)

Répondre

0

Eh bien, j'ai demandé un pretty similar question dans le passé.

La solution convertissait la page d'erreur en une page HTML statique.
Sûrement il doit y avoir une sorte d'erreur sur la page dynamique, mais je ne pouvais pas le trouver.

+0

Même problème ici avec les formulaires Web et le routage, dans mon cas, même la page statique ne fonctionne pas alors j'ai supprimé redirectMode = "ResponseRewrite" – GibboK

0

Je suis arrivé au même problème et j'ai constaté que, apparemment, la raison en est le fichier .ashx, si vous utilisez un .aspx normal cela fonctionnera, il l'a fait pour moi; Im essayant toujours de comprendre comment "activer" l'extension de fichier .ashx avec REsponseRewrite car il serait plus logique plutôt que d'utiliser une page ASPX dans mon cas. Ive un fil ouvert sur ce sujet ici:

http://social.msdn.microsoft.com/Forums/it-IT/aspnetit/thread/7b8f5e36-44a8-40ea-bd73-2e99a1fd42dd

0

Il n'y a aucun moyen de le faire avec un gestionnaire ashx dans .NET en cours (à partir de 4.5).

ResponseRewrite utilise HttpServerUtility.Execute qui est codé en dur pour autoriser uniquement les pages aspx ou les fichiers statiques (ou les pages ASP héritées).

Questions connexes