Megosztás a következőn keresztül:


Pillanatkép-hibakereső engedélyezése .NET-alkalmazásokhoz az Azure Service Fabricben, a Cloud Servicesben és a virtuális gépeken

Ha a ASP.NET vagy ASP.NET Core-alkalmazás a Azure-alkalmazás Szolgáltatásban fut, és testre szabott Pillanatkép-hibakereső konfigurációt vagy a .NET Core előzetes verzióját igényli, kezdje a .NET-alkalmazások pillanatkép-hibakeresőjének engedélyezésével Azure-alkalmazás Szolgáltatásban.

Ha az alkalmazás az Azure Service Fabricben, az Azure Cloud Servicesben, az Azure Virtual Machinesben vagy a helyszíni gépeken fut, kihagyhatja a Snapshot Debugger engedélyezését az App Service-ben, és kövesse a jelen cikkben található útmutatást.

Mielőtt elkezdené

Pillanatkép-gyűjtemény konfigurálása ASP.NET alkalmazásokhoz

Amikor hozzáadja a Microsoft.ApplicationInsights.SnapshotCollector NuGet csomagot az alkalmazáshoz, a SnapshotCollectorTelemetryProcessor csomagot automatikusan hozzá kell adni az TelemetryProcessors ApplicationInsights.config szakaszához.

Ha nem jelenik meg SnapshotCollectorTelemetryProcessor az ApplicationInsights.config fájlban, vagy testre szeretné szabni a Pillanatkép-hibakereső konfigurációját, manuálisan is szerkesztheti. Ezek a módosítások azonban felülíródnak, ha később a Microsoft.ApplicationInsights.SnapshotCollector NuGet csomag újabb verziójára frissít.

Az alábbi példa az alapértelmezett konfigurációnak megfelelő konfigurációt mutatja be:

<TelemetryProcessors>
  <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
    <!-- The default is true, but you can disable Snapshot Debugging by setting it to false -->
    <IsEnabled>true</IsEnabled>
    <!-- Snapshot Debugging is usually disabled in developer mode, but you can enable it by setting this to true. -->
    <!-- DeveloperMode is a property on the active TelemetryChannel. -->
    <IsEnabledInDeveloperMode>false</IsEnabledInDeveloperMode>
    <!-- How many times we need to see an exception before we ask for snapshots. -->
    <ThresholdForSnapshotting>1</ThresholdForSnapshotting>
    <!-- The maximum number of examples we create for a single problem. -->
    <MaximumSnapshotsRequired>3</MaximumSnapshotsRequired>
    <!-- The maximum number of problems that we can be tracking at any time. -->
    <MaximumCollectionPlanSize>50</MaximumCollectionPlanSize>
    <!-- How often we reconnect to the stamp. The default value is 15 minutes.-->
    <ReconnectInterval>00:15:00</ReconnectInterval>
    <!-- How often to reset problem counters. -->
    <ProblemCounterResetInterval>1.00:00:00</ProblemCounterResetInterval>
    <!-- The maximum number of snapshots allowed in ten minutes.The default value is 1. -->
    <SnapshotsPerTenMinutesLimit>3</SnapshotsPerTenMinutesLimit>
    <!-- The maximum number of snapshots allowed per day. -->
    <SnapshotsPerDayLimit>30</SnapshotsPerDayLimit>
    <!-- Whether or not to collect snapshot in low IO priority thread. The default value is true. -->
    <SnapshotInLowPriorityThread>true</SnapshotInLowPriorityThread>
    <!-- Agree to send anonymous data to Microsoft to make this product better. -->
    <ProvideAnonymousTelemetry>true</ProvideAnonymousTelemetry>
    <!-- The limit on the number of failed requests to request snapshots before the telemetry processor is disabled. -->
    <FailedRequestLimit>3</FailedRequestLimit>
  </Add>
</TelemetryProcessors>

A pillanatképeket csak az Application Insightsnak jelentett kivételek alapján gyűjtjük össze. Bizonyos esetekben (például a .NET-platform régebbi verzióiban) előfordulhat, hogy a kivételgyűjteményt úgy kell konfigurálnia, hogy láthassa a kivételeket pillanatképekkel a portálon.

Pillanatkép-gyűjtemény konfigurálása ASP.NET Core-alkalmazásokhoz vagy feldolgozói szolgáltatásokhoz

Előfeltételek

Az alkalmazásnak már hivatkoznia kell az alábbi Application Insights NuGet-csomagok egyikére:

A NuGet-csomag hozzáadása

Adja hozzá a Microsoft.ApplicationInsights.SnapshotCollector NuGet csomagot az alkalmazáshoz.

A szolgáltatásgyűjtemény frissítése

Az alkalmazás indítási kódjában, ahol a szolgáltatások konfigurálva vannak, adjon hozzá egy hívást a AddSnapshotCollector bővítménymetódushoz. Érdemes közvetlenül a hívás AddApplicationInsightsTelemetryután hozzáadni ezt a sort. Példa:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddSnapshotCollector();

A Pillanatkép-gyűjtő konfigurálása

A legtöbb esetben az alapértelmezett beállítások elegendőek. Ha nem, szabja testre a beállításokat úgy, hogy hozzáadja a következő kódot a hívás előtt AddSnapshotCollector()

using Microsoft.ApplicationInsights.SnapshotCollector;
...
builder.Services.Configure<SnapshotCollectorConfiguration>(builder.Configuration.GetSection("SnapshotCollector"));

Ezután adjon hozzá egy szakaszt SnapshotCollector appsettings.json, ahol felülbírálhatja az alapértelmezett értékeket. Az alábbi példa az alapértelmezett konfigurációnak megfelelő konfigurációt mutatja be:

{
  "SnapshotCollector": {
    "IsEnabledInDeveloperMode": false,
    "ThresholdForSnapshotting": 1,
    "MaximumSnapshotsRequired": 3,
    "MaximumCollectionPlanSize": 50,
    "ReconnectInterval": "00:15:00",
    "ProblemCounterResetInterval":"1.00:00:00",
    "SnapshotsPerTenMinutesLimit": 1,
    "SnapshotsPerDayLimit": 30,
    "SnapshotInLowPriorityThread": true,
    "ProvideAnonymousTelemetry": true,
    "FailedRequestLimit": 3
  }
}

Ha manuálisan kell testre szabnia a Pillanatkép-gyűjtő viselkedését appsettings.json használata nélkül, használja a delegáltak túlterhelésétAddSnapshotCollector. Példa:

builder.Services.AddSnapshotCollector(config => config.IsEnabledInDeveloperMode = true);

Pillanatkép-gyűjtemény konfigurálása más .NET-alkalmazásokhoz

A pillanatképek csak az Application Insightsnak jelentett kivételekre gyűjthetők. Az ASP.NET és ASP.NET Core-alkalmazások esetében az Application Insights SDK automatikusan jelenti a kezeletlen kivételeket, amelyek kikerülnek egy vezérlőmetódus vagy végpontútvonal-kezelő elől. Más alkalmazások esetében előfordulhat, hogy módosítania kell a kódot a jelentéskészítéshez. A kivételkezelési kód az alkalmazás szerkezetétől függ. Példa:

using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;

internal class ExampleService
{
  private readonly TelemetryClient _telemetryClient;

  public ExampleService(TelemetryClient telemetryClient)
  {
    // Obtain the TelemetryClient via dependency injection.
    _telemetryClient = telemetryClient;
  }

  public void HandleExampleRequest()
  {
    using IOperationHolder<RequestTelemetry> operation = 
        _telemetryClient.StartOperation<RequestTelemetry>("Example");
    try
    {
      // TODO: Handle the request.
      operation.Telemetry.Success = true;
    }
    catch (Exception ex)
    {
      // Report the exception to Application Insights.
      operation.Telemetry.Success = false;
      _telemetryClient.TrackException(ex);
      // TODO: Rethrow the exception if desired.
    }
  }
}

A következő példa ahelyett használja ILogger a következőt TelemetryClient: Ez a példa feltételezi, hogy az Application Insights-naplószolgáltatót használja. Ahogy a példa is mutatja, a kivétel kezelésekor mindenképpen adja át a kivételt első paraméterként LogError.

using Microsoft.Extensions.Logging;

internal class LoggerExample
{
  private readonly ILogger _logger;

  public LoggerExample(ILogger<LoggerExample> logger)
  {
    _logger = logger;
  }

  public void HandleExampleRequest()
  {
    using IDisposable scope = _logger.BeginScope("Example");
    try
    {
      // TODO: Handle the request
    }
    catch (Exception ex)
    {
      // Use the LogError overload with an Exception as the first parameter.
      _logger.LogError(ex, "An error occurred.");
    }
  }
}

Feljegyzés

Alapértelmezés szerint az Application Insights-naplózó (ApplicationInsightsLoggerProvider) továbbítja a kivételeket a Pillanatkép-hibakeresőnek a segítségével TelemetryClient.TrackException. Ezt a viselkedést az TrackExceptionsAsExceptionTelemetry osztály tulajdonsága ApplicationInsightsLoggerOptions szabályozza. Ha az Application Insights-naplózó konfigurálásakor van beállítva TrackExceptionsAsExceptionTelemetry false , akkor az előző példa nem aktiválja a Pillanatkép-hibakeresőt. Ebben az esetben módosítsa a kódot a manuális híváshoz TrackException .

Feljegyzés

2025. március 31-én megszűnik az eszközkulcsalapú betöltés támogatása. A rendszerállapot-kulcsok betöltése továbbra is működni fog, de a továbbiakban nem biztosítunk frissítéseket vagy támogatást a funkcióhoz. Váltás kapcsolati sztring az új képességek kihasználásához.

Következő lépések