Włączanie debugera migawek dla aplikacji .NET i .NET Core w Azure Functions

Debuger migawek działa obecnie w przypadku aplikacji ASP.NET i ASP.NET Core działających w Azure Functions w planach usług systemu Windows.

Zalecamy uruchomienie aplikacji w warstwie usługi Podstawowa lub nowszej podczas korzystania z narzędzia Snapshot Debugger.

W przypadku większości aplikacji warstwy usługi Bezpłatna i Współdzielona nie mają wystarczającej ilości pamięci ani miejsca na dysku, aby zapisać migawki.

Wymaganie wstępne

Włączanie monitorowania usługi Application Insights w aplikacji usługi Functions

Włączanie debugera migawek

Aby włączyć narzędzie Snapshot Debugger w aplikacji usługi Functions, dodaj snapshotConfiguration właściwość do pliku host.json i ponownie wdróż funkcję. Przykład:

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

Debuger migawek jest wstępnie zainstalowany w ramach środowiska uruchomieniowego Azure Functions i jest domyślnie wyłączony. Ponieważ jest on uwzględniony w środowisku uruchomieniowym, nie trzeba dodawać dodatkowych pakietów NuGet ani ustawień aplikacji.

W prostym przykładzie aplikacji funkcji platformy .NET Core, która jest następująca: .csproj, {Your}Function.csi host.json ma włączoną funkcję 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
      }
    }
  }
}

Włączanie debugera migawek dla innych chmur

Obecnie jedynymi regionami, które wymagają modyfikacji punktu końcowego, są Azure Government i platforma Microsoft Azure obsługiwana przez firmę 21Vianet.

Poniższy przykład przedstawia zaktualizowany host.json punkt końcowy agenta chmury dla instytucji rządowych USA:

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

Oto obsługiwane zastąpienia punktu końcowego agenta snapshot Debugger:

Właściwość Chmura dla instytucji rządowych USA Chmura w Chinach
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Wyłączanie debugera migawek

Aby wyłączyć debuger migawek w aplikacji usługi Functions, zaktualizuj host.json plik, ustawiając snapshotConfiguration.isEnabled właściwość na false.

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

Zalecamy włączenie debugera migawki we wszystkich aplikacjach w celu ułatwienia diagnostyki wyjątków aplikacji.

Następne kroki

  • Wygeneruj ruch do aplikacji, który może wyzwolić wyjątek. Następnie poczekaj od 10 do 15 minut, aż migawki zostaną wysłane do wystąpienia usługi Application Insights.
  • Wyświetl migawki w Azure Portal.
  • Dostosuj konfigurację debugera migawek na podstawie przypadku użycia w aplikacji usługi Functions. Aby uzyskać więcej informacji, zobacz Konfiguracja migawki w pliku host.json.
  • Aby uzyskać pomoc dotyczącą rozwiązywania problemów z debugerem migawek, zobacz Rozwiązywanie problemów z debugerem migawek.