現在オフラインです。再接続するためにインターネットの接続を待っています

カスタム エラー ページを ASP.NET でを Visual C# .NET を使用してレポートを作成する方法

この記事は、以前は次の ID で公開されていました: JP306355
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:306355
Microsoft Visual Basic .NET 版のこの資料には、次を参照してください。 308132.

この資料は、次の Microsoft.NET Framework クラス ライブラリの名前空間を参照します。
  • System.Diagnostics

このタスクでは

概要
Visual C# .NET コードを使用して、トラップを ASP.NET でが発生した場合は、エラーに応答する方法を説明します。ASP.NET には、エラー処理オプションから従来 Microsoft Active Server Pages (ASP) が向上します。ASP.NET でのアプリケーションでいくつかの異なるレベルでのエラーを処理できます。

ASP.NET の新機能

ASP.NET のエラーに応答して処理をする方法のいくつかの進歩を提供します。従来の ASP でエラーを処理する"On Error Resume Next"(または JScript でtry-catchブロック) を使用します。代わりに、Microsoft インターネット インフォメーション サービス (IIS) 5.0 を実行している場合は、カスタム エラーのレポートのページを作成するASPErrorオブジェクト使用します。ただし、この方法では、制限があります。

ASP.NET ではいくつかのレベルでは処理し、ASP.NET アプリケーションを実行するときに発生する可能性のあるエラーへの応答を提供します。ASP.NET は、トラップし、エラーが発生したときに応答するための 3 つの主要な方法を提供: Page_Errorためのアプリケーションの構成ファイル (Web.config)。

この資料では、ASP.NET アプリケーションでこれらの新機能を使用する方法を示します。ここでは、カスタム エラー ページを ASP.NET に直接関連する一般的なエラー報告の提供方法について説明、その他のエラーの処理、 try -ブロックや共通言語ランタイム (CLR) の例外システムなどの方法については扱いません。

Page_Error メソッドを使用する方法

Page_Errorイベント ハンドラーは、ページ レベルで発生するエラーをトラップする方法を説明します。(次のサンプル コードは、) と単にエラー情報を表示できます、や、イベント ログに記録またはその他のアクションを実行します。

メモ 次の使用例は、デモンストレーション目的でのみ、ブラウザーで詳細なエラー情報を表示します。インターネット上でアプリケーションが実行している場合は特に、アプリケーションのエンドユーザーに詳細情報を表示するときに注意します。エラーが発生したことを通知して、実際にログオンし、エラーの詳細、イベント ログには、ユーザーにメッセージを表示する、適切な動作になります。

次の使用例は、null 例外を強制的にPage_Loadイベント ハンドラーで発生するエラーをスローします。この手順では、最初のページのPage_Errorイベントのハンドラーを使用してデモンストレーションを作成します。
  1. 名前 PageEvent.aspxto プロジェクトの新しいファイルを追加するこれらの手順に従います。
    1. Microsoft Visual Studio .NET を開きます。
    2. ソリューション エクスプ ローラーでプロジェクト ノードを右クリックし、追加] をポイントおよび、 Web フォームの追加] をクリックします。
    3. [名前] テキスト ボックスで次のように入力します。 PageEvent.aspx、し、[開く] をクリックします。
  2. PageEvent.aspx に次のコードを追加します。
    <script language=C# runat="server">void Page_Load(object sender, System.EventArgs e){	throw(new ArgumentNullException());}public void Page_Error(object sender,EventArgs e){	Exception objErr = Server.GetLastError().GetBaseException();	string err =	"<b>Error Caught in Page_Error event</b><hr><br>" + 			"<br><b>Error in: </b>" + Request.Url.ToString() +			"<br><b>Error Message: </b>" + objErr.Message.ToString()+			"<br><b>Stack Trace:</b><br>" + 	                  objErr.StackTrace.ToString();	Response.Write(err.ToString());	Server.ClearError();}</script> 					

    メモ このコード サンプルでは、 AutoEventWireup属性が明示的に設定されていません。AutoEventWireup属性に assigna の値を明示的に場合は、既定値は trueです。Yourapplications の開発に Visual Studio .NET を使用している場合は、Web フォーム テンプレートのコードは明示的AutoEventWireup属性値をfalseに設定します。既定値の thatASP.NET は、重要な違いがあるし、既定値をこの属性に、Visual Studio .NET テンプレート codeassigns。かどうかのように、 AutoEventWireup属性値はfalseで宣言されているイベント ハンドラーに設定します。ASPX ページは notfire です。Thisfunctionality についてわからない場合は、混乱を招くことがあります。
  3. [ファイル] メニューから [ PageEvent.aspx の保存をクリックします。
  4. ページを右クリックし、ページを実行するには、 [ブラウザーで表示] をクリックします。エラーがスローされることと、コードの仕様に reportedaccording。
メモ コードは、 Server.ClearErrorする呼び出しを発行することがあります。これにより、エラーの継続のためのイベント ハンドラーになります。

さらに、 @ PageディレクティブのInherits属性のすることも必要があります。Inheritsを設定した場合、ページを参照する前に、プロジェクトをビルドする必要があります。まず、プロジェクトをビルドしない場合は、次のエラー メッセージが表示されます。
'Project.PageEvent' は、有効な型ではありません。

ための方法を使用する方法

Page_Errorイベント ハンドラーと同様のためのイベント ハンドラーをアプリケーションで発生するエラーをトラップするには、使用できます。イベントのアプリケーション全体のスコープにあるためのアプリケーションのエラー情報を記録またはその他のアプリケーション レベルのエラーが発生した場合を処理できます。

次のサンプルは、上記のコード サンプルのPage_Errorに基づいており、 Page_Errorイベント ハンドラーではPage_Loadでエラーがトラップされない場合に呼び出されます。ためのイベント ハンドラーは、アプリケーションの Global.asax ファイルで指定します。簡潔にするため、このセクションの手順では、例外をスロー、Global.asax ファイルは、のためのイベント ハンドラーでエラーをトラップすると、イベント ログへの書き込みのエラー新しいページを作成します。次の手順には、ためのメソッドを使用する方法を示しています。
  1. プロジェクトに AppEvent.aspx という名前の新しいファイルを追加します。
  2. AppEvent.aspx に次のコードを追加します。
    <script language=C# runat="server">	void Page_Load(object sender, System.EventArgs e)	{		throw(new ArgumentNullException());	}</script>					

    メモ AutoEventWireup属性に関する「によって」セクションで説明した情報は、この手順では、サンプル コードも同様です。詳細については、「によって」セクション情報を参照してください。
  3. [ファイル] メニューから [ AppEvent.aspx を保存をクリックします。
  4. AppEvent.aspx ページのPage_Loadイベント ハンドラーで、その youthrow のエラーをトラップするには、Global.asax ファイルのためのイベント ハンドラーを追加します。Global.asax のイベント ログを使用する、 System.Diagnostics名前空間のusingステートメントの addanother する必要があることに注意してください。

    Global.asax ファイルに以下のコードを追加します。
    using System.Diagnostics;protected void Application_Error(object sender, EventArgs e){	Exception objErr = Server.GetLastError().GetBaseException();	string err =	"Error Caught in Application_Error event\n" +			"Error in: " + Request.Url.ToString() +			"\nError Message:" + objErr.Message.ToString()+ 			"\nStack Trace:" + objErr.StackTrace.ToString();	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);	Server.ClearError();	//additional actions...} 					
  5. Global.asax ファイルを保存します。
  6. Visual Studio .NET では、[ビルド] メニューの [ビルド] をクリックします。
  7. ページを右クリックし、[ブラウザーで表示] をクリックします。この場合、ページは空白になります、しかし、新しいエントリがイベント ログに追加された各必要があります。このサンプルは、イベント ビューアーからアクセスできるアプリケーション ログにエントリを作成します。Loggingthe エラーが発生した後可能性がある詳細ユーザー friendlyerror、別のページにユーザーをリダイレクトする、または必要な場合に追加処理を実行します。

Web.config ファイルを使用する方法

Server.ClearErrorを呼び出すことはできませんか、によってためのイベント ハンドラーは、エラー、エラーのトラップを処理する場合は、Web.config ファイルの<customErrors>セクションの設定に基づいています。[ <customErrors>] セクションで、既定のエラー ページ (defaultRedirect) として、リダイレクト ページが指定または発生した HTTP エラー コードに基づいて、特定のページを指定できます。このメソッドを使用するには、ユーザーが受信したエラー メッセージをカスタマイズします。

アプリケーションでは、前のレベルのいずれかでトラップされないエラーが発生した場合は、このカスタム ページが表示されます。このセクションでは、 Server.ClearErrorが呼び出されることはありませんには、Global.asax ファイルを変更する方法について説明します。結果として、エラーは、エラーをトラップするには、最後のポイントとして、Web.config ファイルで処理されます。 </customErrors></customErrors>
  1. Global.asax ファイルは、previousexample から開きます。
  2. 行をコメント アウト、 Server.ClearErrorにエラー サーフェス、Web.configfile であることを確認します。
  3. Global.asax に変更を保存します。コードは次のような nowappear が必要です。
    using System.Diagnostics;protected void Application_Error(object sender, EventArgs e){	Exception objErr = Server.GetLastError().GetBaseException();	string err =	"Error Caught in Application_Error event\n" +			"Error in: " + Request.Url.ToString() +			"\nError Message:" + objErr.Message.ToString() + 			"\nStack Trace:" + objErr.StackTrace.ToString();	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);	//Server.ClearError();	//additional actions...} 					
  4. 次のコードを追加、<customErrors>セクション、ユーザーをカスタム ページにリダイレクトする:<b00> </b00> </customErrors>
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On"></customErrors>						
    メモ 関連する Web サーバの機種名を参照するようdefaultRedirect属性にファイル パスを変更する必要があります。
  5. このレベルでトラップされたエラーは、既定のエラー ページを送信、ため、この例のエラー ページの .htm ページを使用するように提示された内容を制御するこのメソッドを使用していることに注意 ErrorStatus.htm.Keep という名前のエラー ページを作成するあります。ErrorStatus.htm に次を追加します。
    <HTML><HEAD><TITLE></TITLE><META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0"></HEAD><BODY>     <b>Custom Error page!</b>     <br>     You have been redirected here from the <customErrors> section of the      Web.config file.</BODY></HTML>					
  6. コードをテストするファイルの保存、プロジェクトをビルド、し AppEvent.aspx をブラウザーで表示します。エラーがスローされると、ErrorStatus.htm ページにリダイレクトされますに注意してください。
[ <customErrors>] セクションのdefaultRedirect属性の値に既定のエラー ページを参照することができますを基に、発生した HTTP エラー コードにリダイレクトするには、特定のページを指定することもできます。<error>の子要素は、このオプションを使用できます。例:<b00> </b00> </error> </customErrors>
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">	<error statusCode="404" redirect="filenotfound.htm" /></customErrors>				
メモ <customErrors>セクションのdefaultRedirectで指定されているページは .htm ファイルです。私は

[ <customErrors>] セクションに、 mode属性on に設定されているにはが含まれていることを確認します。Mode属性は、エラーのリダイレクトが行われる方法を制御する使用されます。たとえば、アプリケーションを開発している場合は、ほとんどの場合、実際の ASP.NET エラー メッセージを表示するしてたくないよりわかりやすいエラー ページにリダイレクトされます。Mode属性には、次の設定が含まれています: </customErrors></customErrors>
  • : ハンドルされていない例外指定defaultRedirectページにユーザーをリダイレクトします。このモードは、本番環境で主に使用されます。
  • 無効: ユーザー、例外情報を受け取るし、 defaultRedirectページ redirectedto いないのは。このモードは、主に開発に使用されます。
  • RemoteOnly: (usinglocalhost) で、ローカル コンピューター上のサイトにアクセスするユーザーは、例外情報が表示されるだけです。他のすべてのユーザーは、 defaultRedirectページにリダイレクトされます。このモードは、主にデバッグのために使用されます。

トラブルシューティング

Microsoft Windows 2000 および Microsoft Windows XP のデフォルトのインストールでの ASP.NET ワーカー プロセスで Web アプリケーションのコードを実行します。ASPNET アカウントと呼ばれる特権のないローカル アカウントにデフォルトではこのプロセスの id です。ASP.NET のベータ リリースでは、プロセス id はシステム、多くの特権を持つコンピューター上の強力な管理アカウント。

Windows Server 2003 (IIS 6) で、既定のインストールでは ASP.NET のワーカー プロセスで Web アプリケーションのコードを実行します。NetworkService と呼ばれる制限付きのアカウントをデフォルトではこのプロセスの id です。

この変更および影響、この記事のコードおよび追加のアクセス権が必要な他のコードの実行に関する詳細については、次の Web サイトを参照してください。
セキュリティの変更、Microsoft.NET Framework のバージョン 1
http://msdn2.microsoft.com/en-us/library/ms994923.aspx
関連情報
詳細については、次のマイクロソフト Web サイトを参照してください。
最後にエラーのトラップをキャッチしてください。

警告: この記事は自動翻訳されています

プロパティ

文書番号:306355 - 最終更新日: 10/29/2013 00:53:00 - リビジョン: 2.0

Microsoft ASP.NET 1.0, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft ASP.NET 1.1, Microsoft Visual C# .NET 2003 Standard Edition

  • kbconfig kbhowtomaster kbweb kbmt KB306355 KbMtja
フィードバック
mp;t=">