node.js azure web-config iisnode

Los sitios web de Windows Azure anulan mis páginas de error 404 y 500 en mi aplicación node.js



web-config iisnode (2)

Bueno, no importa, encontré el problema. Si alguien más está teniendo el mismo problema, simplemente agregue lo siguiente en <system.webServer> en web.config:

<httpErrors existingResponse="PassThrough" />

Estoy usando sitios web de Windows Azure para alojar una aplicación node.js. Hasta ahora todo es genial, excepto por mis errores personalizados. En mi aplicación de nodo tengo un controlador de errores que procesa correctamente una página de error 404 personalizada y 500 en mi máquina local. Sin embargo, tan pronto como publico en azul, anula la respuesta cuando configuro el código de estado en cualquier cosa excepto en 200.

Si no paso el código de estado 500 o 404 a la respuesta, entonces esto no sucede, pero sí quiero que los códigos de estado lleguen al navegador. Localmente obtengo mi página de error personalizada muy bien:

Sin embargo, en los sitios web azure solo devuelve una sola línea de texto:

La página no se puede mostrar porque se ha producido un error interno en el servidor.

Traté de crear mi propio web.config para anular el predeterminado con errores personalizados deshabilitados, pero eso no pareció tener ningún efecto. Aquí está mi web.config:

<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <customErrors mode="off" /> </system.web> <system.webServer> <handlers> <add name="iisnode" path="app.js" verb="*" modules="iisnode"/> </handlers> <rewrite> <rules> <rule name="StaticContent"> <action type="Rewrite" url="public{REQUEST_URI}"/> </rule> <rule name="DynamicContent"> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/> </conditions> <action type="Rewrite" url="app.js"/> </rule> </rules> </rewrite> <iisnode debuggingEnabled="true" devErrorsEnabled="true" debuggerPathSegment="debug" nodeProcessCommandLine="&quot;%programfiles(x86)%/nodejs/node.exe&quot;" logDirectory="../../LogFiles/nodejs" watchedFiles="*.js;iisnode.yml;node_modules/*;views/*.jade;views/*.ejb;routes/*.js" /> </system.webServer> </configuration>

No estoy seguro de si iisnode (la extensión para iis que enruta solicitudes a node.js) es responsable de anular mis páginas de error o si iis es el responsable. ¿Alguna sugerencia?


Tuve un problema similar con el proyecto MVC alojado en Windows Azure. En la máquina local alojada en IIS funcionaba bien, pero en la máquina en vivo recibía el siguiente error: "El recurso que está buscando se ha eliminado, se ha cambiado su nombre o no está disponible temporalmente".

Agregar esto a la configuración web en system.webServer me salvó el día

Mi web.config se parece a esto

<system.web> *** <customErrors mode="RemoteOnly" defaultRedirect="~/Error/PageNotFound"> <error statusCode="404" redirect="~/Error/PageNotFound" /> <error statusCode="500" redirect="~/Error/ServerError"/> </customErrors> </system.web> *** <system.webServer> <httpErrors existingResponse="PassThrough" /> </system.webServer>