كتابة التعليمات البرمجية لتعقب الطلبات باستخدام Application Insights

يحتاج Application Insights إلى تعقب طلبات التطبيق الخاص بك لتوفير ملفات تعريف للتطبيق الخاص بك على صفحة الأداء في مدخل Microsoft Azure. بالنسبة للتطبيقات المبنية على أطر عمل مجهزة بالفعل (مثل ASP.NET و ASP.NET Core)، يمكن ل Application Insights تعقب الطلبات تلقائيا.

بالنسبة للتطبيقات الأخرى (مثل أدوار عامل Azure Cloud Services وواجهات برمجة التطبيقات عديمة الحالة في Azure Service Fabric)، تحتاج إلى تعقب الطلبات باستخدام التعليمات البرمجية التي تخبر Application Insights أين تبدأ طلباتك وتنتهي. ثم يتم إرسال طلبات القياس عن بعد إلى Application Insights، والتي يمكنك عرضها في صفحة الأداء . يتم تجميع ملفات التعريف لهذه الطلبات.

لتعقب الطلبات يدويًا:

  1. في وقت مبكر من عمر التطبيق، أضف التعليمة البرمجية التالية:

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

    لمزيد من المعلومات حول هذا التكوين العمومي الأساسي للتجهيز، راجع استخدام Service Fabric مع Application Insights.

  2. بالنسبة إلى أيّ جزء من التعليمة البرمجية تريد تجهيزه، أضف عبارة StartOperation<RequestTelemetry>باستخدام حوله، كما هو موضح في المثال التالي:

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

    الاستدعاء StartOperation<RequestTelemetry> ضمن نطاق StartOperation<RequestTelemetry> آخر غير معتمد. يمكنك استخدام StartOperation<DependencyTelemetry> في النطاق المتداخل بدلاً من ذلك. على سبيل المثال:

    using (var getDetailsOperation = client.StartOperation<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;
    }
    }
    

إشعار

في 31 مارس 2025، سينتهي دعم إدخال مفاتيح الأجهزة. سيستمر استيعاب مفتاح الأجهزة في العمل ولكننا لن نقوم بتوفير تحديثات أو أي دعم للميزة. الانتقال إلى سلاسل الاتصال للاستفادة من الإمكانات الجديدة.

الخطوات التالية

استكشف أخطاء Application Insights Profiler وأصلحها.