Condividi tramite


Abilitare Snapshot Debugger per le app .NET e .NET Core in Funzioni di Azure

Snapshot Debugger può essere attualmente usato per app ASP.NET e ASP.NET Core in esecuzione in Funzioni di Azure nei piani di servizio Windows.

Quando si usa Snapshot Debugger, è consigliabile eseguire l'applicazione nei livelli di servizio Basic o superiore. Per la maggior parte delle applicazioni:

  • I livelli di servizio Gratuito e Condiviso non dispongono di memoria o spazio su disco sufficiente per il salvataggio degli snapshot.
  • Il livello A consumo non è attualmente disponibile per Snapshot Debugger.

Snapshot Debugger è preinstallato come parte del runtime di Funzioni di Azure, quindi non è necessario aggiungere altri pacchetti NuGet o impostazioni dell'applicazione.

Prerequisito

Abilitare il monitoraggio di Application Insights nell'app per le funzioni.

Abilitare Snapshot Debugger

Per abilitare Snapshot Debugger nell'app per le funzioni, aggiungere la proprietà snapshotConfiguration al file host.json e ridistribuire la funzione. Ad esempio:

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

Generare traffico verso l'applicazione in grado di attivare un'eccezione. Attendere quindi 10-15 minuti perché gli snapshot inizino ad essere inviati all'istanza di Application Insights.

È possibile verificare che Snapshot Debugger sia stato abilitato controllando i file dell'app per le funzioni .NET. Ad esempio, nella semplice app per le funzioni .NET seguente, Snapshot Debugger risulta abilitato in .csproj, {Your}Function.cs e host.json dell'applicazione .NET:

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

Abilitare Snapshot Debugger per altri cloud

Attualmente, le uniche aree che richiedono la modifica degli endpoint sono Azure per enti pubblici e Microsoft Azure gestito da 21Vianet.

L'esempio seguente illustra l'aggiornamento di host.json con l'endpoint dell'agente cloud del governo degli Stati Uniti:

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

Le sostituzioni supportate dell'endpoint dell'agente di Snapshot Debugger sono le seguenti:

Proprietà Cloud del governo USA Cloud per la Cina
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Disabilitare Snapshot Debugger

Per disabilitare Snapshot Debugger nell'app per le funzioni, aggiornare il file host.json impostando la proprietà snapshotConfiguration.isEnabled su false.

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

Passaggi successivi