33

私はWindowsAzureWebサイトを使用してnode.jsアプリケーションをホストしています。これまでのところ、カスタムエラーを除いてすべてが素晴らしいです。私のノードアプリには、ローカルマシンでカスタム404およびカスタム500エラーページを正常にレンダリングするエラーハンドラーがあります。ただし、azureに公開するとすぐに、statusCodeを200以外に設定すると、応答が上書きされます。

500または404statusCodeを応答に渡さない場合、これは発生しませんが、ステータスコードをブラウザに渡してもらいたいです。ローカルでは、カスタムエラーページが正常に表示されます。

ただし、Azure Webサイトでは、1行のテキストしか返されません。

内部サーバーエラーが発生したため、ページを表示できません。

カスタムエラーを無効にしてデフォルトのweb.configをオーバーライドする独自の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(リクエストをnode.jsにルーティングするiisの拡張機能)がエラーページのオーバーライドを担当しているかどうか、またはiis自体が担当しているかどうかはわかりません。助言がありますか?

4

2 に答える 2

89

気にしないでください、私は問題を見つけました。他の誰かが同じ問題を抱えている場合は<system.webServer>、web.configの下に以下を追加するだけです。

<httpErrors existingResponse="PassThrough" />
于 2013-02-28T20:56:22.907 に答える
1

WindowsAzureでホストされているMVCプロジェクトでも同様の問題が発生しました。IISでホストされているローカルマシンでは正常に動作していましたが、ライブマシンでは、「探しているリソースが削除されたか、名前が変更されたか、一時的に利用できません」というエラーが発生していました。

これをsystem.webServerの下のWeb構成に追加すると、1日が節約されました

私の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>
于 2015-11-20T14:12:58.427 に答える