2010-08-24 6 views
8

Bonne journée!Manipulation ASP.NET MVC 404 et IIS7 <httpErrors>

J'utilise la stratégie pour gérer 404 erreurs comme ceci: Error handling for ASP.NET MVC 2 and IIS 7.0 ou ceci: How can I properly handle 404 in ASP.NET MVC?

En bref: je gère 404 comme exception Global.asax sans ajouter de règles de routage, si l'exception est 404 je rends contrôleur spécial action \ avec un message d'erreur.

Sur IIS6, il fonctionne avec le mappage générique ASP.NET. Sur IIS7 en mode intégré, je dois ajouter ce qui suit à la Web.config (où /error/HttpError404 est mon action page 404):

<httpErrors> 
     <remove statusCode="403" subStatusCode="-1" /> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/error/HttpError404" responseMode="ExecuteURL" /> 
     <error statusCode="403" prefixLanguageFilePath="" path="/error/HttpError403" responseMode="ExecuteURL" /> 
    </httpErrors> 

Pourquoi? Le routage fonctionne différemment sur le mode intégré IIS et le mappage générique IIS6?

Merci d'avance!

MISE À JOUR: D'après mes tests, il semble que mes travaux de gestion des erreurs et mon action 404 est rendu, mais il semble que IIS voit 404 code de réponse (que je mets programme dans mon action 404) et remplacer ma page avec des erreurs par défaut.

Lorsque j'ai défini <httpErrors> j'ai obtenu deux hits pour la page 404: un de gestion des exceptions dans Global.asax et un de IIS.

Cela peut-il être la cause?

Répondre

11

Il il semble que je l'ai fixé par la mise en Web.config:

<httpErrors existingResponse="PassThrough" /> 
+0

J'ai eu le même problème depuis des mois et cela a fonctionné pour moi. Merci pour la mise à jour! –

+0

Vous êtes les bienvenus :) – artvolk

+2

Je sais qu'il est un peu tard, mais ce qui a fonctionné avec moi avec MVC3 utilise exisitingResponse = "Replace" –

Questions connexes