2010-08-24 11 views
8

¡Buen día!ASP.NET MVC 404 manejo e IIS7 <httpErrors>

I utilizar la estrategia para manejar errores 404 como esto: Error handling for ASP.NET MVC 2 and IIS 7.0 o esto: How can I properly handle 404 in ASP.NET MVC?

En resumen: que manejo 404 como excepción en Global.asax sin añadir reglas de encaminamiento, si la excepción es 404 me hacen controlador \ acción especial con mensaje de error

En IIS6 funciona con asignación de comodines ASP.NET. En IIS7 en modo integrado tengo que añadir lo siguiente a la Web.config (donde /error/HttpError404 es mi acción con la página 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> 

¿Por qué? El enrutamiento funciona de manera diferente en el modo integrado de IIS y en la asignación de comodines IIS6.

¡Gracias de antemano!

ACTUALIZACIÓN: Según mis pruebas parece que se vuelve mi tratamiento de errores obras y mi acción 404, pero parece que IIS ve 404 código de respuesta (la cual di programación en mi acción 404) y sustituir a mi página con errores predeterminados

Cuando configuré <httpErrors> obtuve dos visitas para la página 404: una desde el manejo de excepciones en Global.asax y otra desde IIS.

¿Puede ser esta la causa?

Respuesta

11

Parece que he fijado mediante el establecimiento de Web.config:

<httpErrors existingResponse="PassThrough" /> 
+0

que he tenido el mismo problema durante meses y esto funcionó para mí. ¡Gracias por la actualización! –

+0

De nada :) – artvolk

+2

Sé que es un poco tarde, pero lo que funcionó conmigo con MVC3 es usar exisitingResponse = "Reemplazar" –

Cuestiones relacionadas