2009-08-18 32 views
13

Estoy ejecutando una aplicación que tiene sus propios manejadores de errores. Las páginas de error se muestran correctamente mientras se prueba en el entorno de desarrollo (las páginas de error se muestran correctamente).
Sin embargo, el mismo código en la producción de IIS, las páginas de error se sustituyen. El problema se describe here.IIS 7.0 no muestra páginas de error personalizadas

Me pregunto si hay alguna manera de escribir esta configuración en el archivo web.config en lugar de modificar el código.

Respuesta

13

Awe tiene razón (+1), pero además: IIS 7 tiene un manejo especial descrito en la publicación de blog que ha vinculado y this MSDN article. Si está usando HandleErrorAttribute en su acción, esto ya está hecho para usted. De lo contrario, deberá configurar:

filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; 

... usted mismo.

+0

¿Cuál fue el motivo de esta configuración? –

+2

Obviamente, no hablo por Microsoft. Solo puedo adivinar sus motivaciones. Creo que los usuarios consideran que los mensajes de error reales son "aterradores". Por lo tanto, las páginas de error falsas en IE, y esta característica. De ahí, probablemente, las páginas que está mostrando en su aplicación MVC. Solo necesita decirle a IIS que ya ha proporcionado un mensaje de error fácil de usar, para que no tenga que molestarse. –

4

Hay una configuración en el archivo Web.config aplicaciones para configurar el modo de depuración:

por defecto es:

<customErrors mode="RemoteOnly" /> 

Inténtelo de "Off" (Nota: el valor es sensible a mayúsculas !)

<customErrors mode="Off" /> 

no estoy seguro de si este ajuste es respetado por IIS7, pero ya se ve un comportamiento diferente en su entorno de desarrollo desde el desplegado, esta era mi conjetura puño. Para probar si este es el caso, puede intentar ejecutar su aplicación de desarrollo desde una máquina diferente en su red si tiene esa posibilidad.

+0

Lo he intentado pero no funcionó. También incluí algunas configuraciones de servidor en el archivo .config pero resultó que IIS de alguna manera las ignora. –

+0

http://stackoverflow.com/questions/2480006/what-is-the-difference-between-customerrors-and-httperrors –

8

Bien Resultó que para obligar a IIS 7 a mostrar páginas personalizadas, las siguientes líneas deberían agregarse al archivo web.config.

Poner en la sección system.webServer

<httpErrors errorMode="Detailed"> <!-- this is impornant --> 
<!-- Some custom error pages url go here --> 
</httpErrors> 
1

descubrí que la sección <system.webServer> puede dejar que la solicitud pase a través. Luego, mi aplicación puede mostrar mi página personalizada. Puede utilizar estas líneas en su Web.Config:

<system.webServer> 
    <httpErrors existingResponse="PassThrough" /> 
</system.webServer> 

También puede leer la versión extendida saber What to expect from IIS7 custom error module.

Cuestiones relacionadas