Error 500 en IIS 8/8.5 con ColdFusion 10/11
coldfusion-10 iis-8 (1)
Si tengo un error en mi script de ColdFusion, recibo un mensaje de error 500 de IIS en lugar de ColdFusion. Esto solo ocurre si proporciono el nombre del archivo en la URL y no sucede si abro la URL sin el nombre del script (que abriría index.cfm).
Por ejemplo:
- Error de IIS: http://www.example.com/index.cfm
- Error de IIS: http://www.example.com/foobar.cfm
- Error de Coldfusion: http://www.example.com/
Puedo reproducir este problema en 2 de mis 3 plataformas ColdFusion:
- Trabajo: IIS 7.5 con ColdFusion 10 Update 12 (con el conector actualizado)
- No funciona : IIS 8 con ColdFusion 10 Update 12 (con el conector actualizado)
- No funciona : IIS 8.5 con ColdFusion 11
Mi index.cfm y foobar.cfm:
<!--- provoke a coldfusion error --->
<cfset foo
Mi web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="PassThrough" />
</system.webServer>
</configuration>
Para mí, parece que hay un problema con el conector ColdFusion con IIS 8 e IIS 8.5.
De acuerdo, finalmente pude arreglar esto.
El problema
Ejecuto múltiples aplicaciones web cada una en un directorio virtual propio bajo el mismo sitio web de IIS. Resultó que agregar existingResponse="PassThrough"
a web.config solo funciona parcialmente en directorios virtuales. Sin esa configuración, nunca recibo ningún error de ColdFusion y, en cambio, siempre veo el error de IIS 500. Si agrego existingResponse="PassThrough"
en el archivo web.config de un directorio virtual, los errores de ColdFusion solo se reenvían si accede al sitio sin llamar directamente a un script .cfm (por ejemplo: example.com/ en vez de example.com/index .cfm).
La solución
La solución fue fácil. Solo tuve que agregar la configuración existingResponse="PassThrough"
al web.config del sitio web raíz de IIS y todo está funcionando.
Creo que esto es un error en IIS 8 y 8.5, ya que lo comprobé dos veces en mi servidor IIS 7.5 y no tuve que agregar la propiedad en el sitio web raíz.