Я использую веб-сайты Windows Azure для размещения приложения node.js. Пока все замечательно, кроме моих пользовательских ошибок. В моем приложении node у меня есть обработчик ошибок, который отображает пользовательскую 404-страничную страницу с ошибкой и пользовательскую 500-страничную версию на моем локальном компьютере. Однако, как только я публикую для лазурного, он отменяет ответ, когда я устанавливаю statusCode на все, кроме 200.
Если я не передаю ответный код статуса 500 или 404, это не произойдет, но я хочу, чтобы коды состояния попадали в браузер. Локально я получаю свою страницу с ошибками просто:
Однако на лазурных веб-сайтах он возвращает только одну строку текста:
Невозможно отобразить страницу, поскольку произошла ошибка внутреннего сервера.
Я попробовал создать свой собственный web.config, чтобы переопределить значение по умолчанию с отключенными пользовательскими ошибками, но это не показало никакого эффекта. Вот мой 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=""%programfiles(x86)%\nodejs\node.exe""
logDirectory="..\..\LogFiles\nodejs"
watchedFiles="*.js;iisnode.yml;node_modules\*;views\*.jade;views\*.ejb;routes\*.js" />
</system.webServer>
</configuration>
Я не уверен, что iisnode
(расширение для iis, которое направляет запросы на node.js), отвечает за переопределение моих страниц ошибок или если сам iis несет ответственность. Любые предложения?