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é
- Az alkalmazás Elemzések engedélyezése a webalkalmazásban.
- Adja meg a Microsoft.Application Elemzések. A SnapshotCollector NuGet-csomag 1.4.2-es vagy újabb verziója az alkalmazásban.
Pillanatkép-gyűjtemény konfigurálása ASP.NET alkalmazásokhoz
A Microsoft.Application hozzáadásakor Elemzések. SnapshotCollector NuGet-csomag az alkalmazáshoz, a SnapshotCollectorTelemetryProcessor
csomagot automatikusan hozzá kell adni az TelemetryProcessors
Alkalmazás Elemzések.config szakaszához.
Ha nem jelenik meg SnapshotCollectorTelemetryProcessor
az Application Elemzések.config alkalmazásban, vagy testre szeretné szabni a Snapshot Debugger konfigurációt, manuálisan is szerkesztheti. Ezek a módosítások azonban felülíródnak, ha később a Microsoft.Application újabb verziójára frissít Elemzések. SnapshotCollector NuGet-csomag.
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épek csak az Alkalmazás Elemzések által jelentett kivételek esetén gyűjthető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 Alkalmazás Elemzések NuGet-csomagok egyikére:
A NuGet-csomag hozzáadása
Adja hozzá a Microsoft.Application Elemzések. SnapshotCollector NuGet-csomag 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 AddApplicationInsightsTelemetry
utá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 alkalmazás Elemzések jelentett kivételek esetén gyűjthetők össze. Az ASP.NET és ASP.NET Core-alkalmazások esetében az alkalmazás Elemzések SDK automatikusan jelentést tesz a vezérlőmetódus vagy a végpontútvonal-kezelő elől menekülő kezeletlen kivételekrő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 alkalmazás Elemzések naplózó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 alkalmazás Elemzések naplózó (ApplicationInsightsLoggerProvider
) továbbítja a kivételeket a Pillanatkép-hibakeresőnekTelemetryClient.TrackException
. Ezt a viselkedést az TrackExceptionsAsExceptionTelemetry
osztály tulajdonsága ApplicationInsightsLoggerOptions
szabályozza. Ha az alkalmazás Elemzések-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
- Olyan forgalmat generálhat az alkalmazásba, amely kivételt válthat ki. Ezután várjon 10–15 percet, amíg a pillanatképek el lesznek küldve az alkalmazás Elemzések példánynak.
- Pillanatképek megtekintése az Azure Portalon.
- Pillanatkép-hibakereső hibáinak elhárítása .