更新 : 2007 年 11 月
ASP.NET ページを処理中に、エラーが例外として通知されると、エラーは ASP.NET エラー処理機構が処理します。
ここでは、ASP.NET におけるエラー通知の概要と、モバイル Web ページが含まれた ASP.NET Web アプリケーションとエラー通知との関係について説明します。
ASP.NET エラー通知の概要
要求時には、数種類のエラーが発生する可能性があります。たとえば、次のようなエラーが発生します。
存在しないファイルの要求などの HTTP 自体が返すエラー。
ページ、ユーザー コントロール、または同類のファイルをアセンブリにコンパイルする際に発生する解析エラー。
ASP.NET 内で Web ページを実行中に、ページの有効期間内に発生するエラー。
構成ファイルの読み込みエラー。
メモリ不足などのシステム エラー。
ASP.NET には、エラー通知をカスタマイズするいくつかの機能があります。
エラー レポート モード
開発者に関係のある情報を伴う詳細なエラー、通常のユーザー向けの基本的なエラー、またはカスタム エラーを表示するように、アプリケーションを構成できます。この設定を調整して、クライアントがローカル コンピュータの場合にのみ詳細なエラーを表示できます。
アプリケーション レベルのエラー
要求時にエラーが発生すると、ASP.NET は Application_Error イベントを発生させます。Global.asax ファイル内のメソッドは、このイベントを処理してエラー処理の動作をオーバーライドできます。
ページ レベルのエラー
ページの有効期間中にエラーが発生すると、Page_Error イベントが発生します。発生したエラーに応じて、このイベントのハンドラで、通知動作を実行したりエラーの抑制を含む修正操作を試行できる場合があります。
カスタム エラー
ASP.NET アプリケーション内で発生する例外に対して使用する、複数のカスタム ページを Web.config ファイルに指定できます。エラーが発生した場合、ASP.NET は、アプリケーションがカスタム エラーを表示するように構成されているかどうかをチェックします。また、適切なエラー ページが存在するかどうかもチェックします。どちらかが当てはまる場合、ASP.NET はエラー ページにリダイレクトし、元の URL を格納しているパラメータを渡します。
モバイル Web アプリケーションにおけるアダプティブ エラー通知の概要
モバイル Web ページにおけるエラー通知は、他の ASP.NET アプリケーションにおける場合と同じように動作します。同じカスタマイズ テクニックを使用できます。ただし、各デバイスの操作に適応できるように、モバイル Web ページのエラー通知の動作にはいくつかの相違点があります。
デバイス固有の書式設定
エラー メッセージは、ターゲット デバイスのマークアップ用に自動的に書式設定されます。WML デバイスに対してはカード デッキ、HTML デバイスに対しては HTML ページが設定されます。
![]() |
---|
カスタム エラー ページを作成する場合は、カスタム エラー ページが各デバイスの種類ごとに適切に書式設定されるように、ASP.NET モバイル ページとして記述することをお勧めします。 |
既定のエラー メッセージ コンテンツの制限
いずれのモバイル デバイスについても、その組み込みエラー メッセージは本質的に簡潔なものです。詳細メッセージを表示するようにアプリケーションが構成されていたとしても同様です。エラー メッセージには、通常、発生した例外の種類、および例外が発生したメソッドが含まれます。ただし、クライアントがデスクトップ ブラウザの場合は、標準のエラー メッセージがレンダリングされます。
HTTP 応答コード
ASP.NET が例外を通知する場合、エラーの性質を表す HTTP 応答コードを設定します。ブラウザは、応答コードに基づいて動作でき、また、応答本体に含まれるエラーの詳細を表示できます。ただし、特に WML ベースの電話など、モバイル デバイスによっては、エラーが発生した場合のみ応答コードが表示されます。このようなデバイスでエラーが発生した場合、要求は処理の成功を示す HTTP 応答コード 200 を返しますが、ページの本体にエラー メッセージが含まれています。HTML デバイスでは、応答が実際のエラー コードを返すため、ブラウザはエラーに応じた対応を実行できます。
アダプティブ エラーの通知プロセス
モバイル Web ページの場合、ASP.NET は次の手順を使用してエラーを検出し、通知します。
アプリケーション レベルでエラーが発生した場合、ErrorHandlerModule 型の HTTP モジュールがそのエラーを処理します (このモジュールは自動的にインストールされます)。
ページの有効期間中にページ レベルで例外が発生した場合、ASP.NET はページの OnError メソッドを呼び出します。このページはモバイル ページであるため、MobilePage に実装されたオーバーライドが呼び出され、その結果、割り当てられているページ アダプタの HandleError メソッドが呼び出されます。アダプタのこのメソッドは、エラーの詳細を通知し、エラーが処理されたことを示す値を返すことができます。このメソッドがこのように動作しない場合、発生した例外の処理は継続されます。ASP.NET は自動的にカスタム エラー ページを使用します。
ASP.NET は、手順 1. のエラー ハンドラを呼び出します。ターゲット デバイスが、ASP.NET によって生成されたエラー メッセージを完全にレンダリングできる HTML ブラウザの場合、メソッドはここで終了します。
それ以外の場合は、ASP.NET が例外に関する情報を収集し、内部的に定義された ErrorFormatterPage 型のモバイル ページのインスタンスを作成します。次に、そのデータを収集したデータに関連付け、結果をレンダリングします。このページが、デバイス固有のエラー メッセージの生成を行います。例外は既に処理されているため、イベント メソッドは、HTTP エラー ステータス コードを返しません。