WEBサーバーをつかったWEBアプリケーションといえば、リクエストに応じてブラウザで表示する為のWEBページをレスポンスするというのが一般的だと思います。
ただ、時にはJSON形式などのデータをレスポンスするといった場合もあります。
そんなケースでは、エラーが起きた時HTTPステータスコードで200以外を返しつつ、エラーの詳細をJSON形式などでレスポンスしようと考えたりするはずです。
WEBサーバーにInternet Information Services (IIS) を使用する場合、開発環境では狙い通り動いたのにサーバーで動かしてみるとエラーのレスポンスが思い通りにならず、「サーバーエラー」というようなHTMLページがレスポンスされてくるいという事が起きます。
こんな事が起きている
IISは、WEBアプリケーションがHTTPステータスコードをエラーコードでレスポンスした場合、デフォルトのエラーページに置き換えてレスポンスするという仕様になっています。
この為、独自のエラー情報をWEBアプリケーションから出力したとしても、リクエスト側へその内容は届かないわけです。
web.configで設定を変える
独自の内容をレスポンスさせたい場合は、IISの設定でエラーページに置き換えないようにします。
設定は web.config で行います。
<httpErrors>要素を指定してあげる事でエラー時の挙動を制御する事が出来ます。
<configuration> <system.webServer> <httpErrors errorMode="Custom" existingResponse="PassThrough"/> </system.webServer> </configuration>
errorMode属性に"Custom"を指定し、
existingResponse属性に"PassThrough"を指定する事でWEBアプリケーションが出力する内容をそのままレスポンスするようになります。
詳細は https://technet.microsoft.com/ja-jp/library/ee431601.aspx を参照
コメントをお書きください