2010-02-26 16 views
32

Acabo de configurar en mi primer servidor de Windows Server 2008/IIS7.5 para un concurso en el que participo. No puedo, por la vida de mi entender cómo desactivar el manejo de errores COMPLETAMENTE. Las únicas opciones que veo son:¿Desea solucionar el error de HTTP IIS7?

  • personalizada
  • detallada
  • detallada local, remoto personalizado para

Quiero desactivar la función por completo, y no veo ninguna manera Para hacer eso. ¿Me estoy perdiendo de algo?

mi situación:

Tengo un framework PHP REST que atrapa excepciones y emite un código de estado HTTP 500 si la excepción ya que no ha sido manipulado. A continuación, coloca el mensaje de excepción especificado en el cuerpo de la respuesta y lo envía al navegador. Esto funciona bien en Apache: se envían los encabezados correctos y el mensaje se muestra al usuario. En IIS, sin embargo, la respuesta a los códigos de estado HTTP 4xx y 5xx siempre se intercepta y se inyecta con algún otro mensaje preparado o archivo HTML, y eso es exactamente lo que no quiero que haga más. ¡Por favor ayuda!

Respuesta

63

Después de un poco más de amplitud de la búsqueda, he encontrado la respuesta aquí:

http://blogs.msdn.com/webdevelopertips/archive/2009/08/24/tip-93-did-you-know-php-and-custom-error-pages-configuration.aspx

La solución es editar manualmente el archivo web.config con esta costumbre "httpErrors" entrada:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors existingResponse="PassThrough" /> 
    </system.webServer> 
</configuration> 

Sin embargo, debido a la función de "bloqueo" de IIS 7.0 puede obtener un "Esta sección de configuración no se puede utilizar en esta ruta. Esto sucede cuando la sección es l Ocked a nivel de padres ". error. Para resolver eso, ejecute lo siguiente en el símbolo del sistema:

cd C:\Windows\System32\inetsrv 

appcmd unlock config /section:httpErrors 
2

En el Administrador de IIS -> Sitio -> Páginas de error, haga clic con el botón derecho en cada página de error y seleccione 'Eliminar'.

Lamentablemente, no hay una manera de decirle a IIS que no interfiera desde el lado del script, por lo que siempre es un problema de implementación molesto.

Cuestiones relacionadas