Freigeben über


Aktivieren des Momentaufnahmedebuggers für .NET- und .NET Core-Apps in Azure Functions

Der Momentaufnahmedebugger kann derzeit für ASP.NET- und ASP.NET Core-Apps verwendet werden, die unter Azure Functions in Windows-Dienstplänen ausgeführt werden.

Wenn Sie den Momentaufnahmedebugger verwenden, wird empfohlen, Ihre Anwendung auf der Dienstebene „Basic“ oder einer höheren auszuführen. Für die meisten Anwendungen gilt:

  • Die Dienstebenen „Free“ und „Shared“ haben nicht genügend Arbeits- oder Festplattenspeicher zum Speichern von Momentaufnahmen.
  • Die Verbrauchsebene ist derzeit für den Momentaufnahmedebugger nicht verfügbar.

Da der Momentaufnahmedebugger wird nicht in der Azure Functions-Runtime vorinstalliert wird, ist es nicht erforderlich, zusätzliche NuGet-Pakete oder Anwendungseinstellungen hinzuzufügen.

Voraussetzungen

Aktivieren der Application Insights-Überwachung in Ihrer Functions-App

Aktivieren des Momentaufnahmedebuggers

Um den Momentaufnahmedebugger in Ihrer Functions-App zu aktivieren, fügen Sie die snapshotConfiguration-Eigenschaft zu Ihrer host.json-Datei hinzu und stellen Ihre Funktion erneut bereit. Zum Beispiel:

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

Generieren Sie Datenverkehr für Ihre Anwendung, der eine Ausnahme auslösen kann. Warten Sie dann 10 bis 15 Minuten, bis die Momentaufnahmen an die Application Insights-Instanz gesendet werden.

Sie können überprüfen, ob der Momentaufnahmedebugger aktiviert wurde, indem Sie die Dateien Ihrer .NET-Funktions-App überprüfen. In der folgenden einfachen .NET-Funktions-App zeigen beispielsweise .csproj, {Your}Function.cs und host.json für Ihre .NET-Anwendung den Momentaufnahmedebugger als aktiviert an:

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

Aktivieren des Momentaufnahmedebuggers für andere Clouds

Derzeit sind Azure Government und Microsoft Azure operated by 21Vianet die einzigen Regionen, für die Endpunktänderungen erforderlich sind.

Im Folgenden finden Sie ein Beispiel für die Datei host.json, die mit dem Agent-Endpunkt der US Government-Cloud aktualisiert wurde:

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

Im Folgenden finden Sie die unterstützten Überschreibungen des Agent-Endpunkts für den Momentaufnahmedebugger:

Eigenschaft US Government-Cloud China-Cloud
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Deaktivieren des Momentaufnahmedebuggers

Zum Deaktivieren des Momentaufnahmedebuggers in Ihrer Functions-App aktualisieren Sie Ihre host.json-Datei, indem Sie die snapshotConfiguration.isEnabled-Eigenschaft auf false festlegen.

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

Nächste Schritte