Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Als uw ASP.NET of ASP.NET Core-toepassing wordt uitgevoerd in Azure-app Service en een aangepaste configuratie voor het foutopsporingsprogramma voor momentopnamen of een preview-versie van .NET Core vereist, begint u met Snapshot Debugger inschakelen voor .NET-apps in Azure-app Service.
Als uw toepassing wordt uitgevoerd in Azure Service Fabric, Azure Cloud Services, Azure Virtual Machines of on-premises machines, kunt u het inschakelen van het foutopsporingsprogramma voor momentopnamen in App Service overslaan en de richtlijnen in dit artikel volgen.
Vereisten
- Schakel Application Insights in uw .NET-resource in.
- Neem het NuGet-pakket Microsoft.ApplicationInsights.SnapshotCollector versie 1.4.2 of hoger op in uw app.
- Het kan 10 tot 15 minuten duren voordat momentopnamen naar het Application Insights-exemplaar worden verzonden nadat een uitzondering is geactiveerd.
Momentopnameverzameling configureren voor ASP.NET toepassingen
Wanneer u het NuGet-pakket Microsoft.ApplicationInsights.SnapshotCollector toevoegt aan uw toepassing, wordt het SnapshotCollectorTelemetryProcessor automatisch toegevoegd aan de TelemetryProcessors sectie van ApplicationInsights.config.
Als u `SnapshotCollectorTelemetryProcessor` niet ziet in `ApplicationInsights.config`, of als u de Snapshot Debugger-configuratie wilt aanpassen, kunt u deze handmatig bewerken.
Notitie
Handmatige configuratie kan worden overschreven wanneer u een upgrade uitvoert naar een nieuwere versie van het NuGet-pakket Microsoft.ApplicationInsights.SnapshotCollector .
De standaardconfiguratie van Snapshot Collector ziet er ongeveer als volgt uit:
<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>
Momentopnamen worden verzameld alleen bij uitzonderingen die zijn gerapporteerd aan Application Insights. In sommige gevallen, zoals in oudere versies van het .NET-platform, moet u mogelijk uitzonderingsverzameling configureren om uitzonderingen te zien met momentopnamen in de portal.
Momentopnameverzameling configureren voor ASP.NET Core-toepassingen of Worker Services
Vereisten
Uw toepassing moet al verwijzen naar een van de volgende NuGet-pakketten van Application Insights:
Het NuGet-pakket toevoegen
Voeg het Microsoft.ApplicationInsights.SnapshotCollector NuGet-pakket toe aan uw app.
De servicesverzameling bijwerken
Voeg in de opstartcode van uw toepassing, waar services zijn geconfigureerd, een aanroep toe aan de AddSnapshotCollector extensiemethode. We raden u aan deze regel direct na de aanroep toe te voegen.AddApplicationInsightsTelemetry Voorbeeld:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddSnapshotCollector();
De Snapshot Collector aanpassen
Voor de meeste scenario's zijn de standaardinstellingen van Snapshot Collector voldoende. U kunt de instellingen echter aanpassen door de volgende code toe te voegen voordat de aanroep naar AddSnapshotCollector():
using Microsoft.ApplicationInsights.SnapshotCollector;
...
builder.Services.Configure<SnapshotCollectorConfiguration>(builder.Configuration.GetSection("SnapshotCollector"));
Voeg vervolgens een SnapshotCollector sectie toe aan appsettings.json waarmee u de standaardinstellingen kunt overschrijven.
De standaardconfiguratie van Snapshot Collector appsettings.json lijkt op het volgende voorbeeld:
{
"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
}
}
Als u het gedrag van de momentopnameverzamelaar handmatig moet aanpassen zonder appsettings.json te gebruiken, gebruikt u de overbelasting van AddSnapshotCollector, die een delegate accepteert. Voorbeeld:
builder.Services.AddSnapshotCollector(config => config.IsEnabledInDeveloperMode = true);
Momentopnameverzameling configureren voor andere .NET-toepassingen
Momentopnamen worden alleen verzameld bij uitzonderingen die aan Application Insights worden gerapporteerd.
Voor ASP.NET- en ASP.NET Core-toepassingen rapporteert de Application Insights SDK automatisch niet-verwerkte uitzonderingen die ontsnappen aan een controllermethode of eindpuntroute-handler.
Voor andere toepassingen moet u mogelijk uw code wijzigen om ze te rapporteren. De uitzonderingsafhandelingscode is afhankelijk van de structuur van uw toepassing. Voorbeeld:
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.
}
}
}
In het volgende voorbeeld wordt gebruikgemaakt ILogger van in plaats van TelemetryClient. In dit voorbeeld nemen we aan dat u de Application Insights Logger Provider gebruikt. Zoals in het voorbeeld wordt weergegeven, moet u bij het afhandelen van een uitzondering de uitzondering doorgeven als de eerste parameter aan 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.");
}
}
}
De Application Insights Logger (ApplicationInsightsLoggerProvider) stuurt standaard uitzonderingen door naar het foutopsporingsprogramma voor momentopnamen met behulp van TelemetryClient.TrackException. Dit gedrag wordt beheerd via de TrackExceptionsAsExceptionTelemetry eigenschap in de ApplicationInsightsLoggerOptions klasse.
Als u TrackExceptionsAsExceptionTelemetry instelt op false wanneer u de Application Insights Logger configureert, wordt het foutopsporingsprogramma voor momentopnamen niet door het voorgaande voorbeeld geactiveerd. Wijzig in dit geval uw code om handmatig aan te roepen TrackException .
Verwante inhoud
- Momentopnamen weergeven in Azure Portal.
- Problemen met het foutopsporingsprogramma voor momentopnamen oplossen.