تمكين Snapshot Debugger لتطبيقات ‎.NET و‎.NET Core في وظائف Azure

يعمل Snapshot Debugger حاليا مع تطبيقات ASP.NET ASP.NET Core التي تعمل على Azure Functions على خطط خدمة Windows.

نوصي بتشغيل التطبيق الخاص بك على مستوى الخدمة الأساسية أو أعلى عند استخدام Snapshot Debugger.

بالنسبة لمعظم التطبيقات، لا تحتوي طبقات الخدمة المجانية والمشتركة على ذاكرة أو مساحة قرص كافية لحفظ اللقطات.

المتطلب الأساسي

تمكين مراقبة Application Insights في تطبيق الوظائف

تمكين Snapshot Debugger

لتمكين Snapshot Debugger في تطبيق Functions، أضف الخاصية snapshotConfiguration إلى ملف host.json وأعد توزيع الدالة. على سبيل المثال:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "snapshotConfiguration": {
        "isEnabled": true
      }
    }
  }
}

تم تثبيت Snapshot Debugger مسبقا كجزء من وقت تشغيل Azure Functions ويتم تعطيله بشكل افتراضي. نظرا لأنه مضمن في وقت التشغيل، لا تحتاج إلى إضافة حزم NuGet إضافية أو إعدادات التطبيق.

في مثال تطبيق .NET Core Function البسيط الذي يلي و .csproj{Your}Function.csو و host.json تمكين Snapshot Debugger:

Project.csproj

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.31" />
</ItemGroup>
<ItemGroup>
    <None Update="host.json">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
</ItemGroup>
</Project>

{Your}Function.cs

using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;

namespace SnapshotCollectorAzureFunction
{
    public static class ExceptionFunction
    {
        [FunctionName("ExceptionFunction")]
        public static Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            throw new NotImplementedException("Dummy");
        }
    }
}

Host.json

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      },
      "snapshotConfiguration": {
        "isEnabled": true
      }
    }
  }
}

تفعيل Snapshot Debugger للسحابات الأخرى

حاليا، المناطق الوحيدة التي تتطلب تعديلات نقطة النهاية هي Azure GovernmentوMicrosoft Azure التي يتم تشغيلها بواسطة 21Vianet.

يوضح المثال التالي المحدث host.json مع نقطة نهاية وكيل سحابة حكومة الولايات المتحدة:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      },
      "snapshotConfiguration": {
        "isEnabled": true,
        "agentEndpoint": "https://snapshot.monitor.azure.us"
      }
    }
  }
}

فيما يلي التجاوزات المدعومة لنقطة نهاية عامل Snapshot Debugger:

الخاصية سحابة حكومة الولايات المتحدة سحابة الصين
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

تعطيل Snapshot Debugger

لتعطيل Snapshot Debugger في تطبيق Functions، قم بتحديث الملف الخاص بك host.json عن طريق تعيين الخاصية snapshotConfiguration.isEnabled إلى false.

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "snapshotConfiguration": {
        "isEnabled": false
      }
    }
  }
}

نوصيك بتمكين Snapshot Debugger على جميع تطبيقاتك لتسهيل تشخيص استثناءات التطبيقات.

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