ASP.NETページレベル Tracデバッグ、エラー処理

⚡ スマートサマリー

ASP.NETデバッグ、 tracVisual Studio のエラー処理とエラー処理は、開発者が問題を早期に発見し、リクエストを最後まで追跡するのに役立ちます。 trace.axd を使用し、開発および本番ライフサイクル中に未処理の例外が発生した場合に、ユーザーをカスタムエラーページにリダイレクトします。

  • 🐞 デバッグ: Visual Studio のブレークポイントを使用すると、実行を一時停止して、実行中の ASP.NET ページを一行ずつ検査できます。
  • 🔎 Tracing: 有効にします tracweb.config の e を追加する trace.axdには、すべてのリクエスト、そのステータスコード、およびタイミングが一覧表示されます。
  • 📄 ページへ移動します。 Tracing: 追加 TracPage ディレクティブに e=”true” を指定すると、単一ページのライフサイクルタイミングが表示されます。
  • 🚧 カスタムエラー: customErrorsタグは、アプリケーションが失敗した場合に、ユーザーを分かりやすいエラーページにリダイレクトします。
  • 🧭 未処理の例外: Global.asax の Application_Error は、予期しないエラーを捕捉し、安全なページにリダイレクトします。
  • 🗃️ エラーログ: Server.GetLastError の詳細をファイルに書き込むことで、後でデバッグする際に問題が記録されます。

ASP.NETページレベル Tracプログラミング、デバッグ、およびエラー処理

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

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

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

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

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

この例では、前の章で作成したデモアプリケーションを使用します。次の例では、次の内容を確認します。

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

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

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

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

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 ボタンをクリックする必要があります。

何ですか TracASP.NET で何をするのですか?

用途 tracる リクエストされたページでエラーが発生したかどうかを確認できます。 tracing が有効になっていると、追加ページが trace.axd がアプリケーションに追加されます(下図参照)。このページはアプリケーションに接続され、すべてのリクエストとそのステータスが表示されます。

TracASP.NET での

有効にする方法 TracASP.NET アプリケーションの実装

有効化する方法を見ていきましょう tracのために ASP.NETアプリケーション:

ステップ1) それでは、デモアプリケーションの作成に取り掛かりましょう。ソリューションエクスプローラーからweb.configファイルを開いてください。

有効にする tracASP.NETアプリケーション向けの

ステップ2) 以下のコードをweb.configファイルに追加してください。 traceステートメントは、 tracアプリケーションのための準備。

  • requestLimit は traceステートメントは、処理しなければならないページリクエストの数を指定します。 tracエド。
  • この例では、制限値を40に設定しています。制限値を設定するのは、これより高い値を設定するとアプリケーションのパフォーマンスが低下するためです。

有効にする tracASP.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 enabled="true" pageOutput="false" requestLimit="40" localOnly="false" />

    </system.web>
</configuration>

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

出力:-

有効にする tracASP.NETアプリケーション向けの

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

  1. Web ページのリクエストの時刻。
  2. リクエストされたウェブページの名前。
  3. ウェブ要求のステータスコード(ステータスコードが200の場合は、要求が成功したことを意味します)。
  4. 「詳細を表示」リンクをクリックすると、Webリクエストの詳細を確認できます。重要な情報の一つとして、ヘッダー情報が表示されます。これは、各Webリクエストのヘッダーで送信される情報を示しています。

有効にする tracASP.NETアプリケーション向けの

ページレベル TracASP.NET での

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

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

有効にする方法 TracASP.NET でページレベルでの ing

ページレベルの有効化方法を見ていきましょう。 tracASP.NETアプリケーションの場合:

ステップ1) それでは、デモアプリケーションの作成に取り掛かりましょう。ソリューションエクスプローラーからdemo.aspxファイルを開いてください。

ページレベル TracASP.NET での

ステップ2) ページを有効にするには、以下のコードを追加してください。 tracページ宣言では、属性を追加するだけです。 Trace=”true”。このコード行により、ページレベルの tracる。

ページレベル TracASP.NET での

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

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

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

出力:-

ページレベル TracASP.NET での

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

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

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

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

ステップ1) それでは、デモアプリケーションの作成に取り掛かりましょう。アプリケーションに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.org/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 ファイルに追加します。

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

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におけるエラー処理

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

ASP.NETの未処理の例外

最善のシナリオであっても、予期せぬエラーが発生する可能性はあります。例えば、ユーザーがアプリケーション内で誤ったページにアクセスしてしまう場合などです。これは予測不可能な事態です。このような場合、ASP.NETはユーザーをErrorPage.htmlにリダイレクトすることができます。

その例を見てみましょう。

  • エラーページ(ErrorPage.html)を含む、以前使用したデモアプリケーションをそのまま使用します。
  • そして、アプリケーションに存在しない Web ページを表示しようとします。
  • この場合は、ErrorPage.htmlページにリダイレクトされるべきです。その手順を見ていきましょう。

ステップ1) それでは、デモアプリケーションの作成に取り掛かりましょう。ソリューションエクスプローラーからGlobal.asax.csファイルを開いてください。

ASP.NETの未処理の例外

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

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

ASP.NETの未処理の例外

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            HttpException lastErrorWrapper = Server.GetLastError() as HttpException;

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

Code 説明:-

  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 での未処理の例外

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

ASP.NET エラーログ

アプリケーションエラーをログに記録することで、開発者は後日、エラーのデバッグと解決に役立てることができます。ASP.NETにはエラーをログに記録する機能があります。これは、エラーが捕捉された際にGlobal.asax.csファイルで行われます。捕捉処理中に、エラーメッセージがログファイルに書き込まれます。

その例を見てみましょう。

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

ステップ1) それでは、デモアプリケーションの作成に取り掛かりましょう。ソリューションエクスプローラーからGlobal.asax.csファイルを開いてください。

ASP.NETエラーログ

ステップ2) Global.asax.cs に以下のコードを追加してください。これによりエラーがチェックされ、エラーページ(ErrorPage.html)が表示されます。同時に、エラーの詳細が AllErrors.txt というファイルにログ記録されます。今回の例では、このファイルを D ドライブに作成するコードを記述します。

ASP.NETエラーログ

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            Exception exc = Server.GetLastError();
            String str = "";
            str = exc.Message;

            String path = @"D:\AllErrors.txt";
            File.WriteAllText(path, str);
            Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code 説明:-

  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エラーログ

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

よくあるご質問

はい。GitHub CopilotのようなAIツールは、ASP.NETコードのブレークポイントを提案したり、例外を説明したり、修正案を提示したりできます。 RevAIはアプリケーション固有の状態を誤って解釈する可能性があるため、各提案を確認し、ご自身でバグを再現してください。

はい。次のようなツールの機械学習機能 Azure Application Insightsは、例外の発生頻度の異常な急増やリクエストの遅延を自動的に検出できます。これにより、チームはログファイルを手作業で確認するよりも迅速に本番環境の問題を特定できます。

いいえ。customErrors モードをオフにするとスタックが公開されます。 tracエラーの詳細や機密情報がすべての訪問者に公開されることは、セキュリティ上のリスクとなります。本番環境では、ローカル開発者のみがエラーの詳細を完全に確認できるように、RemoteOnlyモードまたはOnモードを使用してください。

RemoteOnly は、ローカルサーバー上のブラウザに対してのみ詳細なエラーページを表示し、リモートユーザーはデフォルトのリダイレクトページにリダイレクトします。これは、情報漏洩を防ぎながら稼働中のサイトをデバッグするための安全な中間手段です。

web.config の compilation 要素で debug=”false” を設定します。デバッグモードでは最適化が無効になり、タイムアウトが長くなり、メモリ使用量が増加するため、本番サイトでは常に無効にして出荷する必要があります。 Visual Studioの.

いいえ。 trace.axd は、ヘッダー、セッション、サーバー変数を攻撃者に漏洩する可能性があります。localOnly=”true” を設定するか、無効にしてください。 trac展開前に完全に tracデータはリモートユーザーに公開されることは決してありません。

Server.Transferは、ブラウザを変更せずにリクエストをサーバー上のエラーページに転送します。 URL または往復します。Response.Redirect はブラウザに新しいリクエストを送信し、 URL エラーページへ移動します。

例外メッセージ、スタックをキャプチャします trace、要求された URLタイムスタンプやユーザーコンテキストなどの詳細情報が含まれます。これらの情報によって、開発者は後で障害を再現できます。Application_Error の Server.GetLastError メソッドは例外を公開するため、ファイルやデータベースに書き込むことができます。