Uitzonde ringen in uw web-apps diagnosticeren met Application InsightsDiagnose exceptions in your web apps with Application Insights

Uitzonde ringen in uw Live Web-app worden gerapporteerd door Application Insights.Exceptions in your live web app are reported by Application Insights. U kunt mislukte aanvragen correleren met uitzonde ringen en andere gebeurtenissen op de client en de server, zodat u snel de oorzaken kunt vaststellen.You can correlate failed requests with exceptions and other events at both the client and server, so that you can quickly diagnose the causes.

Uitzonderings rapportage instellenSet up exception reporting

Uitzonde ringen diagnosticeren met Visual StudioDiagnosing exceptions using Visual Studio

Open de app-oplossing in Visual Studio om te helpen bij het opsporen van fouten.Open the app solution in Visual Studio to help with debugging.

Voer de app op uw server of op uw ontwikkel computer uit met F5.Run the app, either on your server or on your development machine by using F5.

Open het Application Insights-Zoek venster in Visual Studio en stel dit in voor het weer geven van gebeurtenissen in uw app.Open the Application Insights Search window in Visual Studio, and set it to display events from your app. Tijdens het opsporen van fouten kunt u dit doen door te klikken op de knop Application Insights.While you're debugging, you can do this just by clicking the Application Insights button.

Klik met de rechter muisknop op het project en kies Application Insights, open.

U ziet dat u het rapport kunt filteren om alleen uitzonde ringen weer te geven.Notice that you can filter the report to show just exceptions.

Geen uitzonde ringen weer gegeven? Zie vastleggen uitzonde ringen.No exceptions showing? See Capture exceptions.

Klik op een uitzonderings rapport om de stack tracering weer te geven.Click an exception report to show its stack trace. Klik op een regel verwijzing in de stack-trace om het relevante code bestand te openen.Click a line reference in the stack trace, to open the relevant code file.

In de code ziet u dat code lens gegevens over de uitzonde ringen weergeeft:In the code, notice that CodeLens shows data about the exceptions:

Code lens-melding van uitzonde ringen.

Problemen vaststellen met behulp van de Azure PortalDiagnosing failures using the Azure portal

Application Insights wordt geleverd met een opvallende APM-ervaring die u kan helpen bij het onderzoeken van fouten in uw bewaakte toepassingen.Application Insights comes with a curated APM experience to help you diagnose failures in your monitored applications. Als u wilt starten, klikt u op de optie fouten in het menu Application Insights resource bevindt zich in de sectie onderzoeken.To start, click on the Failures option in the Application Insights resource menu located in the Investigate section. Er wordt een weer gave op volledig scherm weer gegeven waarin u de fout frequentie trends voor uw aanvragen ziet, het aantal fouten bij het mislukken en het aantal gebruikers.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. Aan de rechter kant ziet u enkele van de meest nuttige distributies die specifiek zijn voor de geselecteerde mislukte bewerking, met inbegrip van de eerste drie reactie codes, de belangrijkste drie uitzonderings typen en de bovenste drie typen van de afhankelijkheid.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.

Mislukte sorteren weergave (tabblad bewerkingen)

Met één klik kunt u representatieve voor beelden voor elk van deze subsets van bewerkingen bekijken.In a single click, you can then review representative samples for each of these subsets of operations. Met name om uitzonde ringen te diagnosticeren, kunt u op het aantal van een bepaalde uitzonde ring klikken om het tabblad end-to-end trans actie details te bekijken, zoals dit: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:

Tabblad end-to-end transactie Details

U kunt ook in plaats van uitzonde ringen van een specifieke mislukte bewerking te kijken, vanuit de algemene weer gave van uitzonde ringen beginnen door over te scha kelen op het tabblad uitzonde ringen bovenaan.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. Hier ziet u alle uitzonde ringen die worden verzameld voor uw bewaakte app.Here you can see all the exceptions collected for your monitored app.

Geen uitzonde ringen weer gegeven? Zie vastleggen uitzonde ringen.No exceptions showing? See Capture exceptions.

Aangepaste tracerings-en logboek gegevensCustom tracing and log data

Als u Diagnostische gegevens wilt ophalen die specifiek zijn voor uw app, kunt u code invoegen om uw eigen telemetriegegevens te verzenden.To get diagnostic data specific to your app, you can insert code to send your own telemetry data. Deze wordt weer gegeven in diagnostische Zoek opdrachten naast de aanvraag, pagina weergave en andere automatisch verzamelde gegevens.This displayed in diagnostic search alongside the request, page view, and other automatically collected data.

U hebt verschillende mogelijkheden:You have several options:

Als u deze gebeurtenissen wilt zien, opent u in het menu links zoeken , selecteert u de vervolg keuzelijst gebeurtenis typenen kiest u vervolgens aangepaste gebeurtenis, tracering of uitzonde ring.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.

In detail analyseren

Notitie

Als uw app veel telemetriegegevens genereert, beperkt de adaptieve steekproefmodule automatisch het volume dat naar de portal wordt verzonden door alleen een representatieve fractie van de gebeurtenissen te sturen.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. Gebeurtenissen die deel uitmaken van dezelfde bewerking worden als groep geselecteerd of opgeheven, zodat u kunt navigeren tussen gerelateerde gebeurtenissen.Events that are part of the same operation will be selected or deselected as a group, so that you can navigate between related events. Meer informatie over steek proeven.Learn about sampling.

BERICHT gegevens weer gevenHow to see request POST data

De aanvraag details bevatten niet de gegevens die in een POST-aanroep naar uw app worden verzonden.Request details don't include the data sent to your app in a POST call. Deze gegevens moeten worden gerapporteerd:To have this data reported:

  • Installeer de SDK in uw toepassings project.Install the SDK in your application project.
  • Voeg code in uw toepassing in om micro soft. ApplicationInsights. TrackTrace ()aan te roepen.Insert code in your application to call Microsoft.ApplicationInsights.TrackTrace(). Verzend de POST-gegevens in de para meter Message.Send the POST data in the message parameter. Er is een limiet voor de toegestane grootte. u moet dus proberen alleen de essentiële gegevens te verzenden.There is a limit to the permitted size, so you should try to send just the essential data.
  • Wanneer u een mislukte aanvraag onderzoekt, zoekt u de bijbehorende traceringen.When you investigate a failed request, find the associated traces.

Uitzonde ringen en gerelateerde diagnostische gegevens vastleggenCapturing exceptions and related diagnostic data

In de eerste instantie ziet u in de portal niet alle uitzonde ringen die fouten veroorzaken in uw app.At first, you won't see in the portal all the exceptions that cause failures in your app. U ziet eventuele browser uitzonderingen (als u de Java script-SDK in uw webpagina's gebruikt).You'll see any browser exceptions (if you're using the JavaScript SDK in your web pages). Maar de meeste server uitzonderingen worden door IIS geblokkeerd en u moet een stukje code schrijven om ze te kunnen zien.But most server exceptions are caught by IIS and you have to write a bit of code to see them.

U kunt het volgende doen:You can:

  • Logboek uitzonderingen expliciet door code in uitzonderings-handlers in te voegen om de uitzonde ringen te rapporteren.Log exceptions explicitly by inserting code in exception handlers to report the exceptions.
  • Leg uitzonde ringen automatisch vast door uw ASP.NET Framework te configureren.Capture exceptions automatically by configuring your ASP.NET framework. De benodigde toevoegingen verschillen voor de verschillende soorten Framework.The necessary additions are different for different types of framework.

Rapportage uitzonderingen explicietReporting exceptions explicitly

De eenvoudigste manier is het invoegen van een aanroep van TrackException () in een uitzonderings-handler.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

De para meters voor eigenschappen en metingen zijn optioneel, maar zijn handig voor het filteren en toevoegen van extra informatie.The properties and measurements parameters are optional, but are useful for filtering and adding extra information. Als u bijvoorbeeld een app hebt die verschillende spellen kan uitvoeren, kunt u alle uitzonderings rapporten vinden die betrekking hebben op een bepaald spel.For example, if you have an app that can run several games, you could find all the exception reports related to a particular game. U kunt zoveel items toevoegen als u wilt voor elke woorden lijst.You can add as many items as you like to each dictionary.

BrowseruitzonderingenBrowser exceptions

De meeste browser uitzonderingen worden gerapporteerd.Most browser exceptions are reported.

Als uw webpagina script bestanden van Content Delivery Networks of andere domeinen bevat, zorgt u ervoor dat uw script code het kenmerk crossorigin="anonymous"heeft en dat de server CORS-headersverzendt.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. Hiermee kunt u een stack tracering en Details ophalen voor niet-verwerkte java script-uitzonde ringen van deze resources.This will allow you to get a stack trace and detail for unhandled JavaScript exceptions from these resources.

Uw telemetrie-client opnieuw gebruikenReuse your telemetry client

Notitie

TelemetryClient wordt aanbevolen één keer te worden geïnstantieerd en opnieuw te worden gebruikt gedurende de levens duur van een toepassing.TelemetryClient is recommended to be instantiated once and re-used throughout the life of an application.

Hieronder ziet u een voor beeld van het correct gebruik van TelemetryClient.Below is an example using TelemetryClient correctly.

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

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

WebformulierenWeb forms

Voor webformulieren kan de HTTP-module de uitzonde ringen verzamelen wanneer er geen omleidingen met CustomErrors zijn geconfigureerd.For web forms, the HTTP Module will be able to collect the exceptions when there are no redirects configured with CustomErrors.

Als u echter actieve omleidingen hebt, voegt u de volgende regels toe aan de functie Application_Error in Global.asax.cs.But if you have active redirects, add the following lines to the Application_Error function in Global.asax.cs. (Voeg een Global. asax-bestand toe als u er nog geen hebt.)(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

Te beginnen met Application Insights Web SDK-versie 2,6 (beta3 en hoger), verzamelt Application Insights automatisch niet-verwerkte uitzonde ringen die worden gegenereerd in de methoden van de MVC 5 +-controller.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. Als u eerder een aangepaste handler hebt toegevoegd om dergelijke uitzonde ringen bij te houden (zoals beschreven in de volgende voor beelden), kunt u deze verwijderen om te voor komen dat er dubbele uitzonde ringen worden bijgehouden.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.

Er zijn een aantal gevallen waarin de uitzonderings filters niet kunnen worden verwerkt.There are a number of cases that the exception filters cannot handle. Bijvoorbeeld:For example:

  • Uitzonde ringen die worden veroorzaakt door controller-constructors.Exceptions thrown from controller constructors.
  • Uitzonde ringen die worden veroorzaakt door bericht afhandelingen.Exceptions thrown from message handlers.
  • Uitzonde ringen die zijn opgetreden tijdens route ring.Exceptions thrown during routing.
  • Uitzonde ringen die zijn opgetreden tijdens de serialisatie van de gegevens.Exceptions thrown during response content serialization.
  • Uitzonde ring opgetreden tijdens het opstarten van de toepassing.Exception thrown during application start-up.
  • Uitzonde ring opgetreden in achtergrond taken.Exception thrown in background tasks.

Alle uitzonde ringen die door de toepassing worden verwerkt , moeten nog steeds hand matig worden getraceerd.All exceptions handled by application still need to be tracked manually. Niet-verwerkte uitzonde ringen die afkomstig zijn van controllers, hebben doorgaans het antwoord 500 ' interne server fout '.Unhandled exceptions originating from controllers typically result in 500 "Internal Server Error" response. Als een dergelijke reactie hand matig wordt samengesteld als gevolg van verwerkte uitzonde ring (of geen uitzonde ring), wordt deze bijgehouden in de overeenkomstige aanvraag-telemetrie met ResultCode 500, maar Application Insights SDK kan de bijbehorende uitzonde ring niet bijhouden.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.

Ondersteuning voor eerdere versiesPrior versions support

Raadpleeg de volgende voor beelden om uitzonde ringen bij te houden als u MVC 4 (en eerder) van Application Insights Web SDK 2,5 (en eerder) gebruikt.If you use MVC 4 (and prior) of Application Insights Web SDK 2.5 (and prior), refer to the following examples to track exceptions.

Als de customErrors -configuratie is Off, zijn uitzonde ringen beschikbaar voor het verzamelen van de HTTP-module .If the CustomErrors configuration is Off, then exceptions will be available for the HTTP Module to collect. Als de functie echter wordt RemoteOnly (standaard) of On, wordt de uitzonde ring gewist en niet beschikbaar voor Application Insights om automatisch te verzamelen.However, if it is RemoteOnly (default), or On, then the exception will be cleared and not available for Application Insights to automatically collect. U kunt dit oplossen door de klasse System. Web. MVC. HandleErrorAttributete overschrijven en de overschreven klasse toe te passen, zoals wordt weer gegeven voor de verschillende MVC-versies hieronder (github-bron):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

Vervang het kenmerk HandleError door het nieuwe kenmerk in uw controllers.Replace the HandleError attribute with your new attribute in your controllers.

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

VoorbeeldSample

MVC 3MVC 3

AiHandleErrorAttribute als globale filter registreren in Global.asax.cs: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());
      }
     ...

VoorbeeldSample

MVC 4, MVC5MVC 4, MVC5

AiHandleErrorAttribute registreren als een globale filter in FilterConfig.cs: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());
      }
    }

VoorbeeldSample

Web-APIWeb API

Te beginnen met Application Insights Web SDK-versie 2,6 (beta3 en hoger), verzamelt Application Insights automatisch niet-verwerkte uitzonde ringen die in de controller methoden worden gegenereerd voor 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+. Als u eerder een aangepaste handler hebt toegevoegd om dergelijke uitzonde ringen bij te houden (zoals beschreven in de volgende voor beelden), kunt u deze verwijderen om te voor komen dat er dubbele uitzonde ringen worden bijgehouden.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.

Er zijn een aantal gevallen waarin de uitzonderings filters niet kunnen worden verwerkt.There are a number of cases that the exception filters cannot handle. Bijvoorbeeld:For example:

  • Uitzonde ringen die worden veroorzaakt door controller-constructors.Exceptions thrown from controller constructors.
  • Uitzonde ringen die worden veroorzaakt door bericht afhandelingen.Exceptions thrown from message handlers.
  • Uitzonde ringen die zijn opgetreden tijdens route ring.Exceptions thrown during routing.
  • Uitzonde ringen die zijn opgetreden tijdens de serialisatie van de gegevens.Exceptions thrown during response content serialization.
  • Uitzonde ring opgetreden tijdens het opstarten van de toepassing.Exception thrown during application start-up.
  • Uitzonde ring opgetreden in achtergrond taken.Exception thrown in background tasks.

Alle uitzonde ringen die door de toepassing worden verwerkt , moeten nog steeds hand matig worden getraceerd.All exceptions handled by application still need to be tracked manually. Niet-verwerkte uitzonde ringen die afkomstig zijn van controllers, hebben doorgaans het antwoord 500 ' interne server fout '.Unhandled exceptions originating from controllers typically result in 500 "Internal Server Error" response. Als een dergelijke reactie hand matig wordt uitgevoerd als gevolg van verwerkte uitzonde ring (of geen uitzonde ring), wordt deze bijgehouden in een overeenkomende aanvraag-telemetrie met ResultCode 500, maar Application Insights SDK kan de bijbehorende uitzonde ring niet bijhouden.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.

Ondersteuning voor eerdere versiesPrior versions support

Raadpleeg de volgende voor beelden om uitzonde ringen bij te houden als u WebAPI 1 (en eerder) van Application Insights Web SDK 2,5 (en eerder) gebruikt.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

Override 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);
        }
      }
    }

U kunt dit overschreven kenmerk toevoegen aan specifieke controllers, of het toevoegen aan de globale filter configuratie in de klasse 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());
        }
      }
    }

VoorbeeldSample

Web API 2.xWeb API 2.x

Een implementatie van Iexceptionlogger toe toevoegen: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);
        }
      }
    }

Voeg dit toe aan de services in 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());
        }
      }
     }

VoorbeeldSample

Als alternatief kunt u het volgende doen:As alternatives, you could:

  1. Vervang de enige ExceptionHandler door een aangepaste implementatie van IExceptionHandler.Replace the only ExceptionHandler with a custom implementation of IExceptionHandler. Dit wordt alleen aangeroepen wanneer het Framework nog steeds kan kiezen welk antwoord bericht moet worden verzonden (niet wanneer de verbinding wordt afgebroken voor het exemplaar)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. Uitzonderings filters (zoals beschreven in de sectie over web-API 1. x controllers hierboven), wordt in geen enkel geval genoemd.Exception Filters (as described in the section on Web API 1.x controllers above) - not called in all cases.

WCFWCF

Voeg een klasse toe die het kenmerk uitbreidt en implementeert IErrorHandler en 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
        {
         ...

VoorbeeldSample

Prestatie meter items voor uitzonde ringenException performance counters

Als u de Application Insights-agent op uw server hebt geïnstalleerd, kunt u een overzicht krijgen van de uitzonderings frequentie, gemeten door .net.If you have installed the Application Insights Agent on your server, you can get a chart of the exceptions rate, measured by .NET. Dit omvat zowel afgehandelde als niet-verwerkte .NET-uitzonde ringen.This includes both handled and unhandled .NET exceptions.

Open een tabblad metrische Explorer, voeg een nieuwe grafiek toe en selecteer uitzonderings snelheid, vermeld onder prestatie meter items.Open a Metric Explorer tab, add a new chart, and select Exception rate, listed under Performance Counters.

Het .NET Framework berekent de frequentie door het aantal uitzonde ringen in een interval te tellen en te delen door de lengte van het interval.The .NET framework calculates the rate by counting the number of exceptions in an interval and dividing by the length of the interval.

Dit wijkt af van het aantal uitzonde ringen dat wordt berekend door de Application Insights Portal TrackException-rapporten tellen.This is different from the 'Exceptions' count calculated by the Application Insights portal counting TrackException reports. De sampling-intervallen verschillen en de SDK verzendt geen TrackException-rapporten voor alle verwerkte en onverwerkte uitzonde ringen.The sampling intervals are different, and the SDK doesn't send TrackException reports for all handled and unhandled exceptions.

Volgende stappenNext steps