Asp.Net ページ レベルのトレース、デバッグ、エラー処理 [例]

どのようなアプリケーションでも、開発プロセス中にエラーは必ず発生します。 早い段階でエラーを発見できることが重要です。

Visual Studio では、ASP.Net アプリケーションに対してこれを行うことができます。Visual Studio はデバッグに使用され、ASP.Net のエラー処理テクニックを備えています。

ASP.NET のデバッグとは何ですか?

デバッグは、アプリケーションにブレークポイントを追加するプロセスです。 これらのブレークポイントは、実行中のプログラムの実行を一時停止するために使用されます。 これにより、開発者は特定の時点でプログラム内で何が起こっているかを理解できます。

プログラムの例を見てみましょう。プログラムは、ユーザーに「デバッグ中です」という文字列を表示します。アプリケーションを実行すると、何らかの理由で文字列が表示されません。問題を特定するには、ブレークポイントを追加する必要があります。文字列を表示するコード行にブレークポイントを追加できます。このブレークポイントにより、プログラムの実行が一時停止されます。この時点で、プログラマーは何が間違っている可能性があるかを確認できます。プログラマーはそれに応じてプログラムを修正します。

この例では、前の章で作成した「DemoApplication」を使用します。次の例では、

  • デモアプリケーションに文字列を表示させる方法。
  • アプリケーションにブレークポイントを追加する方法。
  • このブレークポイントを使用してアプリケーションをデバッグする方法。

ASP.NET でアプリケーションをデバッグする方法

以下は、デモ アプリケーションを作成し、ブレークポイントを追加し、ASP.Net でデバッグする手順です。

ステップ1) Visual Studioでアプリケーションを開く
まず、Visual Studio で Web アプリケーションが開いていることを確認しましょう。DemoApplication が Visual Studio で開いていることを確認します。

ASP.NET でアプリケーションをデバッグする

ステップ 2) Demo.aspx.cs ファイルを開き、以下のコード行を追加します。

  • 文字列を表示するためのコード行 Response.Write を追加しているだけです。
  • したがって、アプリケーションが実行されると、Web ブラウザに「We are debugging」という文字列が表示されるはずです。

ASP.NET でアプリケーションをデバッグする

namespace DemoApplication
{  
  public partial class Demo : System.Web.UI.Page  
		{  
		  protected void Page_Load(object sender, EventArgs e)  
		  {
		    Response.Write("We are debugging"); 
		  }
		}
}

ステップ 3) アプリケーションにブレークポイントを追加する
ブレークポイントは、Visual Studio 内でプログラムの実行を停止するポイントです。

ASP.NET でアプリケーションをデバッグする

  1. ブレークポイントを追加するには、ブレークポイントを挿入する列をクリックする必要があります。 したがって、この場合、プログラムをコード行「Response.Write」で停止する必要があります。 ブレークポイントを追加するためにコマンドを追加する必要はありません。 ブレークポイントを追加したい行をクリックするだけです。
  2. これが完了すると、コードが赤色でマークされることがわかります。 また、コード行の隣の列に赤いバブルが表示されます。

注意: - アプリケーションに複数のブレークポイントを追加できます

ステップ 4) デバッグ モードでアプリケーションを実行する
ここで、デバッグ モードを使用してアプリケーションを実行する必要があります。Visual Studio で、メニュー オプションの [デバッグ] -> [デバッグの開始] を選択します。

ASP.NET でアプリケーションをデバッグする

出力:-

ASP.NET でアプリケーションをデバッグする

すべての手順を正しく実行すると、プログラムの実行が中断されます。Visual Studio はブレークポイントに移動し、コード行を黄色でマークします。

ここで、プログラマがコードが間違っていると感じた場合は、実行を停止できます。 コードはそれに応じて変更できます。 プログラムを続行するには、プログラマはキーボードの F5 ボタンをクリックする必要があります。

ASP.NET のトレースとは何ですか?

アプリケーション トレースを使用すると、要求されたページでエラーが発生したかどうかを確認できます。 トレースを有効にすると、trace.axd という追加のページがアプリケーションに追加されます。 (下の画像を参照)。 このページはアプリケーションに添付されています。 このページには、すべてのリクエストとそのステータスが表示されます。

ASP.NETでのトレース

ASP.NET でアプリケーションのトレースを有効にする方法

トレースを有効にする方法を見てみましょう。 ASP.Net アプリケーション:

ステップ1) 「DemoApplication」に取り組んでみましょう。 ソリューション エクスプローラーから web.config ファイルを開きます。

ASP.NET でアプリケーションのトレースを有効にする

ステップ2) 以下のコード行を Web.config ファイルに追加します。

トレース ステートメントは、アプリケーションのトレースを有効にするために使用されます。

  • トレースステートメントの「requestLimit」が使用されます。 トレースする必要があるページリクエストの数を指定します。
  • この例では、制限値 40 を指定しています。値を大きくするとアプリケーションのパフォーマンスが低下するため、制限値を指定します。

ASP.NET でアプリケーションのトレースを有効にする

<?xml version="1.0" encoding="utf-8"?>
<! --
For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 
-->
<configuration>
	<system.web>
		<compilation debug="true" targetFramework="4.0" />
		<httpRuntime targetFramework="4.0” />
		
		 <trace enable="true" pageOutput="false" requestLimit="40" localOnly="false"/>
		
	</system.web>
</configuration>

Visual Studio で「デモアプリケーション」を実行します。

出力:-

ASP.NET でアプリケーションのトレースを有効にする

URL を参照すると – http://localhost:53003/trace.axd では、各リクエストの情報が表示されます。ここでは、アプリケーションでエラーが発生しているかどうかを確認できます。上記のページには、次の種類の情報が表示されます。

  1. Web ページのリクエストの時刻。
  2. リクエストされている Web ページの名前。
  3. Web リクエストのステータス コード。 (ステータス コード 200 は、リクエストが成功したことを意味します)。
  4. 詳細の表示では、Web リクエストに関する詳細を表示できます。以下に例を示します。提供される重要な詳細情報の 1 つは、ヘッダー情報です。この情報は、各 Web リクエストのヘッダーで送信される情報を示します。

ASP.NET でアプリケーションのトレースを有効にする

ASP.NET でのページ レベルのトレース

ページレベルのトレース ASP.Net では、処理中の Web ページに関するすべての一般情報が表示されます。これは、ページが何らかの理由で動作しない場合にデバッグする際に役立ちます。Visual Studio では、ページのさまざまな側面に関する詳細情報や、Web 要求で呼び出される各メソッドの時間などの情報が提供されます。

たとえば、Web アプリケーションにパフォーマンスの問題がある場合、この情報は問題のデバッグに役立ちます。この情報は、Visual Studio でアプリケーションを実行するときに表示されます。

ASP.NET でページ レベルでトレースを有効にする方法

ASP.Net アプリケーションのページ レベルのトレースを有効にする方法を見てみましょう。

ステップ1) DemoApplication に取り組んでみましょう。 ソリューションエクスプローラーからdemo.aspxファイルを開きます。

ASP.NET でのページ レベルのトレース

ステップ2) 以下のコード行を追加して、ページ トレースを有効にします。 Page 宣言に、Trace=”true” という行を追加するだけです。 このコード行により、ページ レベルのトレースが可能になります。

ASP.NET でのページ レベルのトレース

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" %>

	<!DOCTYPE html>
<html xmlns="http://www.w3.ore/1999/xhtml">
<head runat="server">
	<title></title>
</head>	
	<body>
	  <form id="form1" runat="server”>
	  </form>
</body>
</html>

Visual Studio でアプリケーションを実行します。

出力:-

ASP.NET でのページ レベルのトレース

これで、Web ページ Demo.aspx が表示されると、ページに関するさまざまな情報が表示されます。このページには、ページ ライフサイクルの各側面の時間などの情報が表示されます。

エラー処理: カスタム エラー ページの表示

In ASP.Net、カスタム エラー ページをユーザーに対して表示することができます。アプリケーションに何らかのエラーが含まれている場合、カスタム ページにこのエラーがユーザーに対して表示されます。

この例では、まず HTML ページを追加します。 このページには、「問題を調査中です」という文字列がユーザーに表示されます。 次に、エラー ページが表示されるように、demo.aspx ページにエラー コードを追加します。

以下の手順に従ってください

ステップ1) DemoApplication に取り組んでみましょう。 アプリケーションに HTML ページを追加してみましょう

  1. ソリューション エクスプローラーで DemoApplication を右クリックします。
  2. メニューオプション「追加」→「HTML ページ」を選択します。

ASP.Net でのエラー処理

ステップ2) 次のステップでは、新しい HTML ページに名前を付ける必要があります。

  1. 名前を「ErrorPage」として指定します。
  2. 「OK」ボタンをクリックして続行します。

ASP.Net でのエラー処理

ステップ3) エラーページは Visual Studio で自動的に開きます。ソリューション エクスプローラーに移動すると、追加されたファイルが表示されます。

ASP.Net でのエラー処理

「問題を調査中です」というコード行を HTML ページに追加します。 web.config ファイルに変更を加える前に HTML ファイルを閉じる必要はありません。

ASP.Net でのエラー処理

<!DOCTYPE html>
<html xmlns="http://www.w3.ore/1999/xhtml">
<head runat="server">
	<title></title>
</head>	
	<body>
	  We are looking into the problem
	</body>
</html>

ステップ4) ここで、web.config ファイルに変更を加える必要があります。この変更により、アプリケーションでエラーが発生するたびに、カスタム エラー ページを表示する必要があることが通知されます。

「customErrors」タグを使用すると、カスタム エラー ページを定義できます。 defaultRedirect プロパティは、前の手順で作成したカスタム エラーのページの名前に設定されます。

ASP.Net でのエラー処理

<configuration>
	<system.web>
		<compilation debug="true" targetFramework="4.0" />
		<httpRuntime targetFramework="4.0” />
		
		 <customErrors mode="On" defaultRedirect="ErrorPage.html">
</customErrors>

		
	</system.web>
</configuration>

ステップ5) それでは、demo.aspx.csページに欠陥のあるコードを追加してみましょう。ソリューションエクスプローラーでファイルをダブルクリックしてこのページを開きます。

ASP.Net でのエラー処理

以下のコードを Demo.aspx.cs ファイルに追加します。

  • これらのコード行は、ファイルからテキスト行を読み取るように設計されています。
  • ファイルは「Example.txt」という名前で D ドライブにあるはずです。
  • しかし、私たちの状況では、このファイルは実際には存在しません。 したがって、このコードはアプリケーションの実行時にエラーになります。

ASP.Net でのエラー処理

namespace DemoApplication
{  

  public partial class Demo : System.Web.UI.Page  
		{  
		  protected void Page_Load(object sender, EventArgs e)  
		  {
		   String path = @"D:\Example.txt";
		   string[] lines;
		   lines = File.ReadAllLines(path);
		  }
		}
}

ここでコードを実行します Visual Studioの 以下の出力が得られるはずです。

出力:-

ASP.Net でのエラー処理

上記のページは、アプリケーションでエラーが発生したことを示しています。その結果、Error.html ページがユーザーに表示されます。

ASP.NETの未処理の例外

最良のシナリオであっても、予見できないエラーが発生する場合があります。

ユーザーがアプリケーション内で間違ったページを参照したとします。 これは予測できないことです。 このような場合、ASP.Net はユーザーを errorpage.html にリダイレクトできます。

これについて例を見てみましょう。

  • Errorpage.html がある同じ「DemoApplication」を使用します。
  • そして、アプリケーションに存在しない Web ページを表示しようとします。
  • この場合、ErrorPage.html ページにリダイレクトされるはずです。 これを達成するための手順を見てみましょう。

ステップ1) DemoApplication に取り組んでみましょう。 ソリューション エクスプローラーから Global.asax.cs ファイルを開きます

ASP.NETの未処理の例外

注意: global.asax.cs ファイルは、アプリケーションのすべてのページに適用されるコードを追加するために使用されます。

ステップ2) 以下のコード行を global.asax.cs に追加します。 これらの行は、エラーをチェックし、それに応じて ErrorPage.html ページを表示するために使用されます。

ASP.NETの未処理の例外

namespace DemoApplication
{  

  public partial class Demo : System.Web.UI.Page  
		{  
		  protected void Application_Error(object sender, EventArgs e)  
		  {
		?    HttpException lastErrorWrapper = Server.GetLastError() as HttpException;

			if(lastErrorWrapper.GetHttpCode() == 404)
			Server.T ransfer("~/ErrorPage.html");
		  }
		}
}

コードの説明:-

  1. 最初の行は Application_Error イベント ハンドラーです。 このイベントは、アプリケーションでエラーが発生するたびに呼び出されます。 イベント名は「Application_Error」でなければならないことに注意してください。 そして、パラメータは上に示したとおりである必要があります。
  2. 次に、クラス タイプ HttpException のオブジェクトを定義します。これは、エラーの詳細をすべて保持する標準オブジェクトです。次に、Server.GetLastError メソッドを使用して、アプリケーションで発生した最後のエラーの詳細をすべて取得します。
  3. 次に、最後のエラーのエラー コードが 404 であるかどうかを確認します。(エラー コード 404 は、ユーザーが見つからないページを参照したときに返される標準コードです)。 エラー コードが一致する場合は、ユーザーを ErrorPage.html ページに転送します。

Visual Studioでコードを実行すると、以下の出力が得られるはずです。

出力:-

ページを閲覧する http://localhost:53003/Demo1.aspx 。 Demo1.aspx がアプリケーションに存在しないことに注意してください。 すると、以下の出力が得られます。

ASP.NET での未処理の例外

上記のページは、アプリケーションでエラーが発生したことを示しています。その結果、Error.html ページがユーザーに表示されます。

ASP.NETエラーログ

アプリケーション エラーをログに記録すると、開発者は後でエラーをデバッグして解決しやすくなります。ASP.Net にはエラーをログに記録する機能があります。これは、エラーがキャプチャされたときに Global.asax.cs ファイルで実行されます。キャプチャ プロセス中に、エラー メッセージをログ ファイルに書き込むことができます。

これについて例を見てみましょう。

  • Errorpage.html がある同じ DemoApplication を使用します。
  • そして、アプリケーションに存在しない Web ページを表示しようとします。
  • この場合、ErrorPage.html ページにリダイレクトされるはずです。
  • 同時に、エラー メッセージをログ ファイルに書き込みます。 これを達成するための手順を見てみましょう。

ステップ1) DemoApplication に取り組んでみましょう。 ソリューション エクスプローラーから Global.asax.cs ファイルを開きます

ASP.NETエラーログ

ステップ2) 以下のコード行を global.asax.cs に追加します。エラーがチェックされ、それに応じて ErrorPage.html ページが表示されます。また同時に、エラーの詳細が 'AllErrors.txt' というファイルに記録されます。この例では、このファイルを D ドライブに作成するコードを記述します。

ASP.NETエラーログ

namespace DemoApplication
{  

  public partial class Demo : System.Web.UI.Page  
		{  
		  protected void Application_Error(object sender, EventArgs e)  
		  {
		   Exception exc = Server.GetLastError();
		   String str ="";
		   str = exc.Message;
		   
		   String path = @"D:\AllErrors.txt";
		  File.WriteAllTest(path,str);
		  Server.trrasfer("~/ErrorPage.html");
		  }
		}
}

コードの説明:-

  1. 最初の行は、「Server.GetLastError」メソッドを使用してエラー自体を取得することです。 次に、これは変数「exc」に割り当てられます。
  2. 次に、「str」という空の文字列変数を作成します。 実際のエラー メッセージは、「exc.Message」プロパティを使用して取得します。 exc.Message プロパティには、アプリケーションの実行時に発生するエラーの正確なメッセージが含まれます。 次に、これが文字列変数に割り当てられます。
  3. 次に、「AllErrors.txt」というファイルを定義します。 すべてのエラー メッセージがここに送信されます。 すべてのエラー メッセージを含む文字列 'str' をこのファイルに書き込みます。
  4. 最後に、ユーザーを ErrorPage.html ファイルに転送します。

出力:-

ページを閲覧する http://localhost:53003/Demo1.aspx 。 Demo1.aspx がアプリケーションに存在しないことに注意してください。 すると、以下の出力が得られます。

ASP.NETエラーログ

同時に、「AllErrors.txt」ファイルを開くと、以下の情報が表示されます。

ASP.NETエラーログ

エラー メッセージは、デバッグの目的で後で開発者に渡すことができます。

製品概要

  • ASP.Net には、デバッグとエラー処理を実行する機能があります。
  • デバッグは、コードにブレークポイントを追加することで実現できます。その後、Visual Studio の [デバッグの開始] オプションを実行してコードをデバッグします。
  • トレースは、アプリケーションの実行中に詳細情報を提供する機能です。 これはアプリケーション レベルまたはページ レベルで実行できます。
  • ページ レベルでは、コード Trace=true をページ ディレクティブに追加する必要があります。
  • アプリケーション レベルでは、Trace.axd という追加のページがアプリケーション用に作成されます。 これにより、必要なトレース情報がすべて提供されます。