2010-07-06 12 views
5

Tengo una aplicación ASP.NET MVC que devuelve 404 y ocasionalmente, 500 códigos de estado en varios puntos apropiados.Obteniendo el error IIS7 'one liner' al usar la configuración de error personalizado en web.config

Response.StatusCode = (int)HttpStatusCode.NotFound; 

Cuando me puse uno de estos códigos de estado, que también establezca la propiedad TrySkipIisCustomErrors adecuadamente.

Response.TrySkipIisCustomErrors = true 

Lo que me gustaría hacer ahora, es configurar IIS para pasar a través de estos errores, que yo pongo a mí mismo, y coger cualquier otro error que pueden ocurrir (como el 404 en los archivos estáticos, donde no estoy el envío de solicitudes a ASP.NET o no capturadas 500 errores en mi solicitud (donde presumiblemente el Propety TrySkipIisCustomErrors no se habrá establecido por el marco)

mi nodo system.webServer/httpErrors se parece a esto:.

<httpErrors existingResponse="Auto" errorMode="Custom"> 
</httpErrors> 

Esto devuelve mis propios errores de ASP.NET donde TrySkipIisCustomErrors juego = verdadero, y las páginas de error de IIS estándar para 500s, 404s sin capturar archivos estáticos etc.

Luego trató la modificación de esta manera:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="/Skins/Shared/Error/Error.html" defaultResponseMode="ExecuteURL"> 
    <clear /> 
</httpErrors> 

creo que esto debería mostrar mi página de error personalizada en lugar del estándar IIS uno. Sin embargo, cuando agrego este código recibo un error de IIS de una línea ("La página no se puede mostrar porque se ha producido un error interno del servidor") y devuelve un código de estado de 500.

Supongo que esto se debe a un error en mi configuración, pero no puedo entender lo que estoy haciendo mal.

también he intentado este enfoque, con los mismos resultados:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="Skins\Shared\Error\Error.html" defaultResponseMode="File"> 
    <clear /> 
</httpErrors> 

establecer Incluso una redirección a una dirección URL completamente diferente produce el mismo problema.

He estado utilizando esta página, entre otras, como referencia: http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx.

El archivo de error definitivamente existe, y puedo golpearlo directamente usando un navegador.

Como un aparte, no estoy del todo seguro de lo que debería hacer con el nodo system.Web \ customErrors. ¿Es ésta una configuración exclusiva de IIS6 o se relaciona de alguna manera con ASP.NET? Actualmente no lo incluyo en mi web.config.

+0

¿Se las arregló para resolver esto?Tengo el mismo problema: s – Robba

+0

¿Qué errores hay en el registro de eventos de Windows? ¿Tiene el conjunto de aplicaciones 'Configuración del modo de canal gestionado' configurado en el modo 'Integrado' o 'Clásico'? (Debe estar 'Integrado' para su escenario.) –

+0

El grupo de aplicaciones está en modo integrado. Todavía tiene el problema y no ha podido encontrar una solución. No hay errores en el registro de eventos. Bastante frustrante! – Jamie

Respuesta

1

agréguela a su nodo system.webserver. Le indicará a IIS que permita que ASP.Net maneje los errores.

<httpErrors existingResponse="PassThrough" /> 
+0

gracias por ayudarme a dejar de tirarme del pelo, estúpido, no me deja devolver una respuesta de 500 como quiero –

1

Sé que esto es una cuestión de edad pero es idéntico al problema que he estado teniendo en los últimos días que hace poco me di cuenta. Lo que funcionó para mí:

intente eliminar el elemento

<httpErrors> 

de web.config por completo.

Cuestiones relacionadas