Povolení nástroje Snapshot Debugger pro aplikace .NET a .NET Core ve službě Azure Functions

Snapshot Debugger aktuálně funguje pro aplikace ASP.NET a ASP.NET Core, které běží ve službě Azure Functions v plánech služeb Windows.

Při použití nástroje Snapshot Debugger doporučujeme spustit aplikaci na úrovních služby Basic nebo vyšší. Pro většinu aplikací:

  • Úrovně služby Free a Shared nemají dostatek paměti nebo místa na disku, aby se ušetřily snímky.
  • Úroveň Consumption není aktuálně k dispozici pro Snapshot Debugger.

Snapshot Debugger je předinstalovaný jako součást modulu runtime Azure Functions, takže nemusíte přidávat další balíčky NuGet ani nastavení aplikace.

Požadavek

Povolte monitorování Application Insights v aplikaci Functions.

Povolení ladicího programu snímků

Pokud chcete povolit Snapshot Debugger v aplikaci Functions, přidejte snapshotConfiguration vlastnost do souboru host.json a znovu nasaďte funkci. Příklad:

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

Vygenerujte provoz do vaší aplikace, který může aktivovat výjimku. Pak počkejte 10 až 15 minut, než se snímky odešlou do instance Application Insights.

Zkontrolujte soubory aplikace funkcí .NET a ověřte, že je povolen program Snapshot Debugger. Například v následující jednoduché aplikaci funkcí .NET, .csproj{Your}Function.csv aplikaci .NET a host.json v aplikaci .NET se zobrazí snapshot Debugger jako povolený:

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

Povolení snapshot Debuggeru pro ostatní cloudy

Jedinými oblastmi, které vyžadují úpravy koncových bodů, jsou Azure Government a Microsoft Azure provozované společností 21Vianet.

Následující příklad ukazuje host.json aktualizovaný koncový bod agenta cloudu státní správy USA:

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

Tady jsou podporovaná přepsání koncového bodu agenta Snapshot Debugger:

Vlastnost Cloud pro státní správu USA Cloud Čína
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Zakázání ladicího programu snímků

Chcete-li zakázat Snapshot Debugger v aplikaci Functions, aktualizujte host.json soubor nastavením snapshotConfiguration.isEnabled vlastnosti na false.

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

Další kroky