Подтвердить что ты не робот

Веб-сайты Windows Azure переопределяют мои страницы ошибок 404 и 500 в моем приложении node.js

Я использую веб-сайты 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="&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>

Я не уверен, что iisnode (расширение для iis, которое направляет запросы на node.js), отвечает за переопределение моих страниц ошибок или если сам iis несет ответственность. Любые предложения?

4b9b3361

Ответ 1

Хорошо, неважно, я нашел проблему. Если кто-то другой имеет такую ​​же проблему, просто добавьте следующее в <system.webServer> в web.config:

<httpErrors existingResponse="PassThrough" />

Ответ 2

Была аналогичная проблема с проектом MVC, размещенным в окнах azure. На локальном компьютере, работающем в IIS, работала нормально, но на живой машине я получал следующую ошибку: "Ресурс, который вы ищете, был удален, изменилось его имя или временно недоступно".

Добавление этого в веб-конфигурацию под system.webServer сохранено в моем

Мой web.config выглядит следующим образом

<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>