Application Insights を利用し、Web アプリの例外を診断するDiagnose exceptions in your web apps with Application Insights

ライブ Web アプリの例外は、Application Insights によって報告されます。Exceptions in your live web app are reported by Application Insights. 要求の失敗をクライアントとサーバーの両方の例外やその他のイベントに相互に関連付け、原因をすばやく診断できます。You can correlate failed requests with exceptions and other events at both the client and server, so that you can quickly diagnose the causes.

例外のレポートを設定するSet up exception reporting

Visual Studio を使用して例外を診断するDiagnosing exceptions using Visual Studio

デバッグに役立てるため、Visual Studio でアプリ ソリューションを開きます。Open the app solution in Visual Studio to help with debugging.

サーバー上または開発用コンピューターで、F5 キーを使用してアプリケーションを実行します。Run the app, either on your server or on your development machine by using F5.

Visual Studio で Application Insights の [検索] ウィンドウを開き、アプリからのイベントを表示するように設定します。Open the Application Insights Search window in Visual Studio, and set it to display events from your app. これは、デバッグ時に [Application Insights] ボタンをクリックするだけで実行できます。While you're debugging, you can do this just by clicking the Application Insights button.

プロジェクトを右クリックし、[Application Insights] を選択して開きます。

レポートをフィルター処理して例外だけを表示することができます。Notice that you can filter the report to show just exceptions.

例外が表示されませんか?例外のキャプチャに関するセクションをご覧ください。No exceptions showing? See Capture exceptions.

例外レポートをクリックしてスタック トレースを表示します。Click an exception report to show its stack trace. 関連コード ファイルを開くには、スタック トレース内の明細行参照をクリックします。Click a line reference in the stack trace, to open the relevant code file.

コードでは、CodeLens により例外に関するデータが示されています。In the code, notice that CodeLens shows data about the exceptions:

例外の CodeLens 通知。

Azure Portal を使用して障害を診断するDiagnosing failures using the Azure portal

Application Insights には、監視対象のアプリケーションの障害を診断するのに役立つ、精選された APM エクスペリエンスが用意されています。Application Insights comes with a curated APM experience to help you diagnose failures in your monitored applications. 開始するには、[調査] セクションにある Application Insights リソース メニューの [Failures](失敗) オプションをクリックします。To start, click on the Failures option in the Application Insights resource menu located in the Investigate section. 要求の失敗率の傾向、失敗した回数、影響を受けるユーザーの数が全画面で表示されます。You should see a full-screen view that shows you the failure rate trends for your requests, how many of them are failing, and how many users are impacted. 右側には、上位 3 つの応答コード、上位 3 つの例外の種類、上位 3 つの失敗した依存関係の種類など、選択した失敗した操作に固有の有用な内訳のいくつかが表示されます。On the right, you'll see some of the most useful distributions specific to the selected failing operation, including top three response codes, top three exception types, and top three failing dependency types.

障害トリアージ ビュー ([操作] タブ)

1 回のクリックで、これらの操作の各サブセットの代表的なサンプルを確認できます。In a single click, you can then review representative samples for each of these subsets of operations. 特に例外を診断するには、特定の例外の数をクリックします。すると、その例外が次のようにエンドツーエンド トランザクションの詳細タブに表示されます。In particular, to diagnose exceptions, you can click on the count of a particular exception to be presented with the End-to-end transaction details tab, such as this one:

エンドツーエンド トランザクションの詳細タブ

または、特定の失敗した操作の例外を調べる代わりに、上部で [例外] タブに切り替えて例外の全体像から開始することができます。Alternatively, instead of looking at exceptions of a specific failing operation, you can start from the overall view of exceptions, by switching to the Exceptions tab at the top. ここでは、監視対象のアプリケーションに関して収集されたすべての例外が表示されます。Here you can see all the exceptions collected for your monitored app.

例外が表示されませんか?例外のキャプチャに関するセクションをご覧ください。No exceptions showing? See Capture exceptions.

カスタムのトレースとログ データCustom tracing and log data

アプリに固有の診断データを取得するには、独自のテレメトリ データを送信するコードを挿入します。To get diagnostic data specific to your app, you can insert code to send your own telemetry data. これは、要求、ページ ビュー、およびその他の自動収集されたデータとともに、診断検索に表示されます。This displayed in diagnostic search alongside the request, page view, and other automatically collected data.

いくつかのオプションがあります。You have several options:

  • TrackEvent() は通常、使用パターンを監視するために使用されますが、送信されるデータは診断検索のカスタム イベントの下にも表示されます。TrackEvent() is typically used for monitoring usage patterns, but the data it sends also appears under Custom Events in diagnostic search. イベントには名前が付けられるほか、文字列のプロパティや数値のメトリックが付与され、それらを元に診断検索の結果をフィルター処理できます。Events are named, and can carry string properties and numeric metrics on which you can filter your diagnostic searches.
  • TrackTrace() は、POST 情報などの長いデータを送信できます。TrackTrace() lets you send longer data such as POST information.
  • TrackException() は、スタック トレースを送信します。TrackException() sends stack traces. 例外に関する詳細をご覧ください。More about exceptions.
  • 既に Log4Net、NLog などのログ記録フレームワークを使用している場合は、これらのログのキャプチャして、診断検索の要求や例外データの横に表示できます。If you already use a logging framework like Log4Net or NLog, you can capture those logs and see them in diagnostic search alongside request and exception data.

これらのイベントを表示するには、左側のメニューから [検索] を開き、 [イベントの種類] ドロップダウン メニューを選択し、[カスタム イベント]、[トレース]、または [例外] を選択します。To see these events, open Search from the left menu, select the drop-down menu Event types, and then choose Custom Event, Trace, or Exception.

ドリル スルー

注意

アプリが大量のテレメトリを生成する場合は、アダプティブ サンプリング モジュールが、代表的な一部のイベントのみを送信することによって、ポータルに送信される量を自動的に削減します。If your app generates a lot of telemetry, the adaptive sampling module will automatically reduce the volume that is sent to the portal by sending only a representative fraction of events. 同じ操作に含まれるイベントは、グループ単位で選択または選択解除されるので、関連するイベントごとに操作できます。Events that are part of the same operation will be selected or deselected as a group, so that you can navigate between related events. サンプリングについてはこちらを参照してください。Learn about sampling.

要求の POST データを表示する方法How to see request POST data

要求詳細では、POST 呼び出しでアプリに送信されたデータは含まれません。Request details don't include the data sent to your app in a POST call. このデータを報告するには:To have this data reported:

  • アプリケーション プロジェクトに SDK をインストールしますInstall the SDK in your application project.
  • アプリケーションにコードを挿入し、Microsoft.ApplicationInsights.TrackTrace() を呼び出します。Insert code in your application to call Microsoft.ApplicationInsights.TrackTrace(). メッセージ パラメーターで POST データを送信します。Send the POST data in the message parameter. 許可されるサイズには制限があります。そのため、必要不可欠なデータだけを送信するように努めてください。There is a limit to the permitted size, so you should try to send just the essential data.
  • 失敗した要求を調査するときは、関連付けられているトレースを検索します。When you investigate a failed request, find the associated traces.

例外と関連する診断データをキャプチャするCapturing exceptions and related diagnostic data

最初、ポータルにはアプリの障害の原因となる例外の一部しか表示されません。At first, you won't see in the portal all the exceptions that cause failures in your app. ブラウザーの例外はすべて表示されます (Web ページで JavaScript SDK を使用している場合)。You'll see any browser exceptions (if you're using the JavaScript SDK in your web pages). ただし、ほとんどのサーバー例外は IIS によりキャッチされます。それを確認するには、簡単なコードを記述する必要があります。But most server exceptions are caught by IIS and you have to write a bit of code to see them.

次のようにすることができます。You can:

  • 例外を明示的に記録しますLog exceptions explicitly by inserting code in exception handlers to report the exceptions.
  • 例外を自動的にキャプチャしますCapture exceptions automatically by configuring your ASP.NET framework. 追加しなければならないものはフレームワークの種類によって異なります。The necessary additions are different for different types of framework.

例外を明示的に報告するReporting exceptions explicitly

最も簡単な方法として、例外ハンドラーに TrackException() の呼び出しを挿入します。The simplest way is to insert a call to TrackException() in an exception handler.

    try
    { ...
    }
    catch (ex)
    {
      appInsights.trackException(ex, "handler loc",
        {Game: currentGame.Name,
         State: currentGame.State.ToString()});
    }
    var telemetry = new TelemetryClient();
    ...
    try
    { ...
    }
    catch (Exception ex)
    {
       // Set up some properties:
       var properties = new Dictionary <string, string>
         {{"Game", currentGame.Name}};

       var measurements = new Dictionary <string, double>
         {{"Users", currentGame.Users.Count}};

       // Send the exception telemetry:
       telemetry.TrackException(ex, properties, measurements);
    }
    Dim telemetry = New TelemetryClient
    ...
    Try
      ...
    Catch ex as Exception
      ' Set up some properties:
      Dim properties = New Dictionary (Of String, String)
      properties.Add("Game", currentGame.Name)

      Dim measurements = New Dictionary (Of String, Double)
      measurements.Add("Users", currentGame.Users.Count)

      ' Send the exception telemetry:
      telemetry.TrackException(ex, properties, measurements)
    End Try

プロパティと測定値のパラメーターは省略可能ですが、フィルター処理と、特別な情報を追加するのに便利です。The properties and measurements parameters are optional, but are useful for filtering and adding extra information. たとえば、複数のゲームを実行できるアプリケーションを使用している場合、1 つのゲームに関連する例外レポートをすべて検索できます。For example, if you have an app that can run several games, you could find all the exception reports related to a particular game. 必要な数だけ項目を各辞書に追加できます。You can add as many items as you like to each dictionary.

ブラウザーの例外Browser exceptions

ほとんどのブラウザー例外が報告されます。Most browser exceptions are reported.

Web ページにコンテンツ配信ネットワークまたは他のドメインのスクリプト ファイルが含まれている場合、スクリプト タグに crossorigin="anonymous" 属性があり、サーバーが CORS ヘッダーを送信することを確認します。If your web page includes script files from content delivery networks or other domains, ensure your script tag has the attribute crossorigin="anonymous", and that the server sends CORS headers. これで、これらのリソースから、未処理の JavaScript 例外のスタック トレースと詳細が取得できます。This will allow you to get a stack trace and detail for unhandled JavaScript exceptions from these resources.

テレメトリ クライアントを再利用するReuse your telemetry client

注意

TelemetryClient は、一度インスタンス化された後、アプリケーションの有効期間にわたって再利用されることが推奨されています。TelemetryClient is recommended to be instantiated once and re-used throughout the life of an application.

TelemetryClient の適切な利用例を次に示します。Below is an example using TelemetryClient correctly.

public class GoodController : ApiController
{
    // OK
    private static readonly TelemetryClient telemetryClient;

    static GoodController()
    {
        telemetryClient = new TelemetryClient();
    }
}

Web フォームWeb forms

Web フォームの場合、HTTP モジュールは、CustomErrors で構成されたリダイレクトがないとき、例外を回収できます。For web forms, the HTTP Module will be able to collect the exceptions when there are no redirects configured with CustomErrors.

ただし、アクティブなリダイレクトがある場合、次の行を Global.asax.cs の Application_Error 関数に追加します。But if you have active redirects, add the following lines to the Application_Error function in Global.asax.cs. (Global.asax ファイルがない場合、それを追加します。)(Add a Global.asax file if you don't already have one.)

    void Application_Error(object sender, EventArgs e)
    {
      if (HttpContext.Current.IsCustomErrorEnabled && Server.GetLastError () != null)
      {
         var ai = new TelemetryClient(); // or re-use an existing instance

         ai.TrackException(Server.GetLastError());
      }
    }

MVCMVC

Application Insights Web SDK バージョン 2.6 (beta3 以降) では、Application Insights は、MVC 5+ コントローラーのメソッドでスローされた未処理の例外を自動的に収集します。Starting with Application Insights Web SDK version 2.6 (beta3 and later), Application Insights collects unhandled exceptions thrown in the MVC 5+ controllers methods automatically. そのような例外 (次の例を参照) を追跡するためにカスタム ハンドラーを以前に追加した場合、例外を二重で追跡しないようにハンドラーを取り除くことができます。If you have previously added a custom handler to track such exceptions (as described in following examples), you may remove it to prevent double tracking of exceptions.

例外フィルターが処理できないケースがあります。There are a number of cases that the exception filters cannot handle. 例:For example:

  • コントローラー コンストラクターからスローされる例外。Exceptions thrown from controller constructors.
  • メッセージ ハンドラーからスローされる例外。Exceptions thrown from message handlers.
  • ルーティング中にスローされる例外。Exceptions thrown during routing.
  • 応答コンテンツのシリアル化中にスローされる例外。Exceptions thrown during response content serialization.
  • アプリケーションの起動中にスローされる例外。Exception thrown during application start-up.
  • バックグラウンド タスクでスローされる例外。Exception thrown in background tasks.

アプリケーションによって "処理される" すべての例外も手動で追跡する必要があります。All exceptions handled by application still need to be tracked manually. コントローラーで発生した例外を処理しないと、通常は、500 [内部サーバー エラー] の応答になります。Unhandled exceptions originating from controllers typically result in 500 "Internal Server Error" response. このような応答を、処理済みの例外 (または例外なし) の結果として手動で構成した場合、ResultCode 500 を使用して、対応する要求テレメトリで追跡されます。ただし、Application Insights SDK は対応する例外を追跡できません。If such response is manually constructed as a result of handled exception (or no exception at all) it is tracked in corresponding request telemetry with ResultCode 500, however Application Insights SDK is unable to track corresponding exception.

以前のバージョンのサポートPrior versions support

Application Insights Web SDK 2.5 (および以前) の MVC 4 (および以前) を使用する場合は、次の例を参照して例外を追跡します。If you use MVC 4 (and prior) of Application Insights Web SDK 2.5 (and prior), refer to the following examples to track exceptions.

CustomErrors 構成が Off の場合、HTTP モジュールで例外を収集できます。If the CustomErrors configuration is Off, then exceptions will be available for the HTTP Module to collect. ただし、RemoteOnly (既定) または On の場合、例外は消去され、Application Insights が自動回収する例外はなくなります。However, if it is RemoteOnly (default), or On, then the exception will be cleared and not available for Application Insights to automatically collect. これを解決するには、System.Web.Mvc.HandleErrorAttribute クラスをオーバーライドし、次のようにオーバーライドしたクラスを異なる MVC バージョンに適用します (GitHub ソース)。You can fix that by overriding the System.Web.Mvc.HandleErrorAttribute class, and applying the overridden class as shown for the different MVC versions below (GitHub source):

    using System;
    using System.Web.Mvc;
    using Microsoft.ApplicationInsights;

    namespace MVC2App.Controllers
    {
      [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
      public class AiHandleErrorAttribute : HandleErrorAttribute
      {
        public override void OnException(ExceptionContext filterContext)
        {
            if (filterContext != null && filterContext.HttpContext != null && filterContext.Exception != null)
            {
                //If customError is Off, then AI HTTPModule will report the exception
                if (filterContext.HttpContext.IsCustomErrorEnabled)
                {   //or reuse instance (recommended!). see note above
                    var ai = new TelemetryClient();
                    ai.TrackException(filterContext.Exception);
                }
            }
            base.OnException(filterContext);
        }
      }
    }

MVC 2MVC 2

HandleError 属性をコントローラーの新しい属性で置換します。Replace the HandleError attribute with your new attribute in your controllers.

    namespace MVC2App.Controllers
    {
        [AiHandleError]
        public class HomeController : Controller
        {
    ...

サンプルSample

MVC 3MVC 3

Global.asax.cs で AiHandleErrorAttribute をグローバル フィルターとして登録します。Register AiHandleErrorAttribute as a global filter in Global.asax.cs:

    public class MyMvcApplication : System.Web.HttpApplication
    {
      public static void RegisterGlobalFilters(GlobalFilterCollection filters)
      {
         filters.Add(new AiHandleErrorAttribute());
      }
     ...

サンプルSample

MVC 4、MVC5MVC 4, MVC5

FilterConfig.cs で AiHandleErrorAttribute をグローバル フィルターとして登録します。Register AiHandleErrorAttribute as a global filter in FilterConfig.cs:

    public class FilterConfig
    {
      public static void RegisterGlobalFilters(GlobalFilterCollection filters)
      {
        // Default replaced with the override to track unhandled exceptions
        filters.Add(new AiHandleErrorAttribute());
      }
    }

サンプルSample

Web APIWeb API

Application Insights Web SDK バージョン 2.6 (beta3 以降) では、Application Insights は、WebAPI 2+ についてコントローラーのメソッドでスローされた未処理の例外を自動的に収集します。Starting with Application Insights Web SDK version 2.6 (beta3 and later), Application Insights collects unhandled exceptions thrown in the controller methods automatically for WebAPI 2+. そのような例外 (次の例を参照) を追跡するためにカスタム ハンドラーを以前に追加した場合、例外を二重で追跡しないようにハンドラーを取り除くことができます。If you have previously added a custom handler to track such exceptions (as described in following examples), you may remove it to prevent double tracking of exceptions.

例外フィルターが処理できないケースがあります。There are a number of cases that the exception filters cannot handle. 例:For example:

  • コントローラー コンストラクターからスローされる例外。Exceptions thrown from controller constructors.
  • メッセージ ハンドラーからスローされる例外。Exceptions thrown from message handlers.
  • ルーティング中にスローされる例外。Exceptions thrown during routing.
  • 応答コンテンツのシリアル化中にスローされる例外。Exceptions thrown during response content serialization.
  • アプリケーションの起動中にスローされる例外。Exception thrown during application start-up.
  • バックグラウンド タスクでスローされる例外。Exception thrown in background tasks.

アプリケーションによって "処理される" すべての例外も手動で追跡する必要があります。All exceptions handled by application still need to be tracked manually. コントローラーで発生した例外を処理しないと、通常は、500 [内部サーバー エラー] の応答になります。Unhandled exceptions originating from controllers typically result in 500 "Internal Server Error" response. このような応答を、処理済みの例外 (または例外なし) の結果として手動で構成した場合、ResultCode 500 を使用して、対応する要求テレメトリで追跡されます。ただし、Application Insights SDK は対応する例外を追跡できません。If such response is manually constructed as a result of handled exception (or no exception at all) it is tracked in a corresponding request telemetry with ResultCode 500, however Application Insights SDK is unable to track corresponding exception.

以前のバージョンのサポートPrior versions support

Application Insights Web SDK 2.5 (および以前) の WebAPI 1 (および以前) を使用する場合は、次の例を参照して例外を追跡します。If you use WebAPI 1 (and prior) of Application Insights Web SDK 2.5 (and prior), refer to the following examples to track exceptions.

Web API 1.xWeb API 1.x

System.Web.Http.Filters.ExceptionFilterAttribute をオーバーライドします。Override System.Web.Http.Filters.ExceptionFilterAttribute:

    using System.Web.Http.Filters;
    using Microsoft.ApplicationInsights;

    namespace WebAPI.App_Start
    {
      public class AiExceptionFilterAttribute : ExceptionFilterAttribute
      {
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext != null && actionExecutedContext.Exception != null)
            {  //or reuse instance (recommended!). see note above
                var ai = new TelemetryClient();
                ai.TrackException(actionExecutedContext.Exception);
            }
            base.OnException(actionExecutedContext);
        }
      }
    }

このオーバーライドされた属性を特定のコントローラーに追加するか、WebApiConfig クラスのグローバル フィルター構成に追加できます。You could add this overridden attribute to specific controllers, or add it to the global filter configuration in the WebApiConfig class:

    using System.Web.Http;
    using WebApi1.x.App_Start;

    namespace WebApi1.x
    {
      public static class WebApiConfig
      {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional });
            ...
            config.EnableSystemDiagnosticsTracing();

            // Capture exceptions for Application Insights:
            config.Filters.Add(new AiExceptionFilterAttribute());
        }
      }
    }

サンプルSample

Web API 2.xWeb API 2.x

IExceptionLogger の実装を追加します。Add an implementation of IExceptionLogger:

    using System.Web.Http.ExceptionHandling;
    using Microsoft.ApplicationInsights;

    namespace ProductsAppPureWebAPI.App_Start
    {
      public class AiExceptionLogger : ExceptionLogger
      {
        public override void Log(ExceptionLoggerContext context)
        {
            if (context !=null && context.Exception != null)
            {//or reuse instance (recommended!). see note above
                var ai = new TelemetryClient();
                ai.TrackException(context.Exception);
            }
            base.Log(context);
        }
      }
    }

これを WebApiConfig のサービスに追加します。Add this to the services in WebApiConfig:

    using System.Web.Http;
    using System.Web.Http.ExceptionHandling;
    using ProductsAppPureWebAPI.App_Start;

    namespace WebApi2WithMVC
    {
      public static class WebApiConfig
      {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            config.Services.Add(typeof(IExceptionLogger), new AiExceptionLogger());
        }
      }
     }

サンプルSample

代替として、次のように操作できます。As alternatives, you could:

  1. 唯一の ExceptionHandler を IExceptionHandler のカスタム実装で置換します。Replace the only ExceptionHandler with a custom implementation of IExceptionHandler. これはフレームワークが送信する応答メッセージを選択できるときにのみ呼び出されます (たとえば、接続が中止されるときではなく)。This is only called when the framework is still able to choose which response message to send (not when the connection is aborted for instance)
  2. 例外フィルター (上の Web API 1.x コントローラーのセクション参照) - 場合によっては呼び出されません。Exception Filters (as described in the section on Web API 1.x controllers above) - not called in all cases.

WCFWCF

Attribute を拡張し、IErrorHandler と IServiceBehavior を実装するクラスを追加します。Add a class that extends Attribute and implements IErrorHandler and IServiceBehavior.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.ServiceModel.Description;
    using System.ServiceModel.Dispatcher;
    using System.Web;
    using Microsoft.ApplicationInsights;

    namespace WcfService4.ErrorHandling
    {
      public class AiLogExceptionAttribute : Attribute, IErrorHandler, IServiceBehavior
      {
        public void AddBindingParameters(ServiceDescription serviceDescription,
            System.ServiceModel.ServiceHostBase serviceHostBase,
            System.Collections.ObjectModel.Collection<ServiceEndpoint> endpoints,
            System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
        {
        }

        public void ApplyDispatchBehavior(ServiceDescription serviceDescription,
            System.ServiceModel.ServiceHostBase serviceHostBase)
        {
            foreach (ChannelDispatcher disp in serviceHostBase.ChannelDispatchers)
            {
                disp.ErrorHandlers.Add(this);
            }
        }

        public void Validate(ServiceDescription serviceDescription,
            System.ServiceModel.ServiceHostBase serviceHostBase)
        {
        }

        bool IErrorHandler.HandleError(Exception error)
        {//or reuse instance (recommended!). see note above
            var ai = new TelemetryClient();

            ai.TrackException(error);
            return false;
        }

        void IErrorHandler.ProvideFault(Exception error,
            System.ServiceModel.Channels.MessageVersion version,
            ref System.ServiceModel.Channels.Message fault)
        {
        }
      }
    }

Add the attribute to the service implementations:

    namespace WcfService4
    {
        [AiLogException]
        public class Service1 : IService1
        {
         ...

サンプルSample

例外パフォーマンス カウンターException performance counters

サーバーに Application Insights エージェントがインストールされている場合は、.NET によって測定された例外レートのグラフを取得できます。If you have installed the Application Insights Agent on your server, you can get a chart of the exceptions rate, measured by .NET. これには、処理済みの .NET 例外と未処理の .NET 例外の両方が含まれます。This includes both handled and unhandled .NET exceptions.

[Metric Explorer](メトリックス エクスプローラー) タブを開き、新しいグラフを追加して、パフォーマンス カウンターの下に表示されている [例外レート] を選択します。Open a Metric Explorer tab, add a new chart, and select Exception rate, listed under Performance Counters.

.NET フレームワークでは、特定の時間間隔で例外数をカウントし、それを時間間隔の長さで割り算することで、例外レートを算出します。The .NET framework calculates the rate by counting the number of exceptions in an interval and dividing by the length of the interval.

この値は、TrackException レポートをカウントする Application Insights ポータルで算出される "例外" 数とは異なります。This is different from the 'Exceptions' count calculated by the Application Insights portal counting TrackException reports. サンプリングの時間間隔が異なります。さらに、SDK では、すべての処理済みの例外と未処理の例外について TrackException レポートを送信するわけではありません。The sampling intervals are different, and the SDK doesn't send TrackException reports for all handled and unhandled exceptions.

次の手順Next steps