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 stateless API's van Azure Service Fabric) moet u aanvragen bijhouden met code waarmee Application Insights wordt aangegeven 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 connection string.
    TelemetryConfiguration.Active.InstrumentationKey = "00000000-0000-0000-0000-000000000000";
    

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

  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. Aanroepen van StartOperation<RequestTelemetry> binnen een andere StartOperation<RequestTelemetry> scope wordt niet ondersteund. In plaats daarvan kunt u StartOperation<DependencyTelemetry> gebruiken in de geneste scope. 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 verwerking van instrumentatiesleutels. Het gebruik van instrumentatiesleutels blijft mogelijk, maar we bieden geen updates of ondersteuning meer voor deze functie. Overgang op verbindingsreeksen om te profiteren van nieuwe mogelijkheden.

Volgende stappen

Problemen met Application Insights Profiler voor .NET oplossen.