Delen via


Code schrijven om aanvragen bij te houden met Application Insights Profiler voor .NET

Application Insights moet aanvragen voor uw toepassing bijhouden om profielen voor uw toepassing te bieden op de pagina Prestaties in Azure Portal. Voor toepassingen die zijn gebouwd op reeds geïnstrueerde frameworks (zoals ASP.NET en ASP.NET Core), kan Application Insights aanvragen automatisch bijhouden.

Voor andere toepassingen (zoals Azure Cloud Services-werkrollen en stateless API's van Azure Service Fabric) moet u aanvragen bijhouden met code die Application Insights vertelt waar uw aanvragen beginnen en eindigen. Aanvragen telemetrie wordt vervolgens verzonden naar Application Insights, die u kunt bekijken op de pagina Prestaties . Profielen worden verzameld voor deze aanvragen.

Aanvragen handmatig bijhouden:

  1. Voeg vroeg in de levensduur van de toepassing de volgende code toe:

    using Microsoft.ApplicationInsights.Extensibility;
    ...
    // Replace with your own Application Insights instrumentation key.
    TelemetryConfiguration.Active.InstrumentationKey = "00000000-0000-0000-0000-000000000000";
    

    Zie Service Fabric gebruiken met Application Insights voor meer informatie over deze algemene instrumentatiesleutelconfiguratie.

  2. Voeg voor elk stukje code dat u wilt instrumenteren een StartOperation<RequestTelemetry> using-instructie eromheen toe, zoals wordt weergegeven in het volgende voorbeeld:

    using Microsoft.ApplicationInsights;
    using Microsoft.ApplicationInsights.DataContracts;
    ...
    var client = new TelemetryClient();
    ...
    using (var operation = client.StartOperation<RequestTelemetry>("Insert_Your_Custom_Event_Unique_Name"))
    {
      // ... Code I want to profile.
    }
    
  3. Bellen StartOperation<RequestTelemetry> binnen een ander StartOperation<RequestTelemetry> bereik wordt niet ondersteund. U kunt in plaats daarvan het geneste bereik gebruiken StartOperation<DependencyTelemetry> . Bijvoorbeeld:

    using (var getDetailsOperation = client.Operation<RequestTelemetry>("GetProductDetails"))
    {
      try
      {
        ProductDetail details = new ProductDetail() { Id = productId };
        getDetailsOperation.Telemetry.Properties["ProductId"] = productId.ToString();
    
        // By using DependencyTelemetry, 'GetProductPrice' is correctly linked as part of the 'GetProductDetails' request.
        using (var getPriceOperation = client.StartOperation<DependencyTelemetry>("GetProductPrice"))
        {
            double price = await _priceDataBase.GetAsync(productId);
            if (IsTooCheap(price))
            {
                throw new PriceTooLowException(productId);
            }
            details.Price = price;
        }
    
        // Similarly, note how 'GetProductReviews' doesn't establish another RequestTelemetry.
        using (var getReviewsOperation = client.StartOperation<DependencyTelemetry>("GetProductReviews"))
        {
            details.Reviews = await _reviewDataBase.GetAsync(productId);
        }
    
        getDetailsOperation.Telemetry.Success = true;
        return details;
      }
      catch(Exception ex)
      {
        getDetailsOperation.Telemetry.Success = false;
    
        // This exception gets linked to the 'GetProductDetails' request telemetry.
        client.TrackException(ex);
        throw;
      }
    }
    

Notitie

Op 31 maart 2025 eindigt de ondersteuning voor opname van instrumentatiesleutels. Opname van instrumentatiesleutels blijft werken, maar we bieden geen updates of ondersteuning meer voor de functie. Overgang naar verbindingsreeks s om te profiteren van nieuwe mogelijkheden.

Volgende stappen

Problemen met Application Insights Profiler voor .NET oplossen.