Dela via


Skriva kod för att spåra begäranden med Application Insights Profiler för .NET

Application Insights måste spåra begäranden för ditt program för att tillhandahålla profiler för ditt program på sidan Prestanda i Azure Portal. För program som bygger på redan instrumenterade ramverk (till exempel ASP.NET och ASP.NET Core) kan Application Insights automatiskt spåra begäranden.

För andra program (till exempel Azure Cloud Services-arbetsroller och tillståndslösa API:er för Azure Service Fabric) måste du spåra begäranden med kod som talar om för Application Insights var dina begäranden börjar och slutar. Telemetri för begäranden skickas sedan till Application Insights, som du kan visa på sidan Prestanda . Profiler samlas in för dessa begäranden.

Så här spårar du begäranden manuellt:

  1. Lägg till följande kod tidigt i programmets livslängd:

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

    Mer information om den här globala instrumentationsnyckelkonfigurationen finns i Använda Service Fabric med Application Insights.

  2. För alla kodstycken som du vill instrumentera lägger du till en StartOperation<RequestTelemetry> using-instruktion runt den, som du ser i följande exempel:

    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. Samtal StartOperation<RequestTelemetry> inom ett annat StartOperation<RequestTelemetry> omfång stöds inte. Du kan använda StartOperation<DependencyTelemetry> i det kapslade omfånget i stället. Till exempel:

    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;
      }
    }
    

Kommentar

Stödet för inmatning av instrumentationsnycklar upphör den 31 mars 2025. Inmatningen av instrumenteringsnyckeln fortsätter att fungera, men vi kommer inte längre att tillhandahålla uppdateringar eller stöd för funktionen. Övergå till anslutningssträng för att dra nytta av nya funktioner.

Nästa steg

Felsöka Application Insights Profiler för .NET.