Classic ASP の詳細エラーをブラウザーで表示できるようにする

SERVER


ASP 実行時エラーをブラウザに送信する

Windows Server 2008 R2 上の Microsoft Internet Explorer 7.0 で、ASP (Classic ASP) を実行時、スクリプトエラーが発生しても、既定ではブラウザーにその詳細エラーが通知されないようになっているようでした。これは運用面では安全性が高まるので良いのですけど、開発の際にはこのままではエラー原因の特定が極めて困難です。

従来の ASP 環境と同じように詳細なエラーを通知するように設定する箇所があるのですけど、その設定を調整してみても、なぜか表示されてくれません。

インターネットでいろいろ調べてみたのですけど、見つかったいくつかの方法を試してみてもぜんぜん上手く行かなかったのですけど、調べて行くうちに、少なくとも自分の環境では確実に、ブラウザーに詳細エラーを表示させる方法がありましたので、ここに整理しておきたいと思います。

 

サーバー側の設定

管理ツールから "インターネットインフォメーションサービス (IIS) マネージャ" を起動して、設定の調整を行います。

左側のメニューから いちばん上位のサーバー名 または 実行時エラーを表示させたいサイト を選択して、画面中央の "IIS" グループにある "ASP" をダブルクリックして開きます。

ここの "コンパイル" グループにある "デバッグ プロパティ" をプルダウンして、その中にある 【ブラウザへのエラー送信】 の値を "True" に変更します。

 

インターネット上の説明ではここまでしか説明されていない場合が多いのですが、もうひとつ、設定の調整が必要な個所がありました。

Windows Server 2008 R2 の IIS 7.0 では、エラーページの設定で、既定ではブラウザーに対してカスタムエラーページを表示するように設定されているようでした。ここを調整しない限り、詳細エラーをブラウザーに出力する設定にしたとしても、サーバー上から直接そのページを参照しない限り、ブラウザには詳細エラーではなくカスタムエラーページが送られてしまう様子です。

 

ここの設定を調整するには、"インターネットインフォメーションサービス (IIS) マネージャ" の "IIS" グループにある "エラーページ" から行います。

これをダブルクリックして開いたら、右側の "操作" メニューから "機能設定の編集" をクリックします。

表示されたダイアログボックスの "エラー応答" 欄にある 【詳細なエラー】 にチェックを入れてあげることで、リモート側のブラウザーへも詳細エラーが送信され、エラーの内容を確認できるようになりました。

 

ブラウザー側の設定

なお、ブラウザーに Microsoft Internet Explorer を使用している場合は、これと併せて HTTP エラーメッセージの簡易表示を無効にする必要があるとの情報がインターネット上にありました。

ただ、Internet Explorer 8 で試してみた感じでは、これが有効になっていても、サーバー側での設定を行っていれば、ブラウザーで詳細なエラーメッセージが表示される様子でした。とはいえ確かに、今までもこの設定の ON/OFF で詳細エラーが表示されるか否かが左右された経験があるので、何か支障がなければ、この設定をしておくに越したことはないように思います。

 

HTTP エラーメッセージの簡易表示設定は、Internet Explorer の "ツール" → "インターネットオプション" で行うことができます。

"詳細設定" タブの "ブラウズ" グループにある "HTTP エラーメッセージを簡易表示する" のチェックを外すことで、簡易表示の機能が無効になります。

 

ASP 実行時エラーをイベントビューアに記録する

IIS 7.0 では、ASP 実行時に発生したエラーを Windows のイベントビューアに記録することもできるようになっていました。

ブラウザーにエラーを表示させたくないような場合には、リモート要求に対してはカスタムエラーページを表示させて、イベントログでその詳細を確認するというのも良いかもしれません。

 

設定方法は、"インターネットインフォメーションサービス (IIS) マネージャ" で行います。

最上位の "サーバー名" をクリックしたら、画面中央の "IIS" グループにある "ASP" をダブルクリックして開きます。なお、サイト毎の設定では調整できないようなので、少し注意が必要です。

そして、"コンパイル" グループにある "エラーを NT ログに記録する" を "True" に設定すれば、ASP 実行時のスクリプトエラーを Windows イベントログに記録することができるようになります。

なお、イベントログには、ソースを "Active Server Pages"、キーワードを "クラシック" として、アプリケーションログに警告レベルで記録されるようでした。