Share via


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

Snapshot Debugger attualmente funziona per le app ASP.NET e ASP.NET Core in esecuzione in Funzioni di Azure nei piani di servizio di Windows.

È consigliabile eseguire l'applicazione nel livello di servizio Basic o superiore quando si usa Snapshot Debugger.

Per la maggior parte delle applicazioni, i livelli di servizio Gratuito e Condiviso non dispongono di memoria o spazio su disco sufficiente per salvare gli snapshot.

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 snapshotConfiguration proprietà al file host.json e ridistribuire la funzione. Ad esempio:

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

Snapshot Debugger è preinstallato come parte del runtime di Funzioni di Azure ed è disabilitato per impostazione predefinita. Poiché è incluso nel runtime, non è necessario aggiungere altri pacchetti NuGet o impostazioni dell'applicazione.

Nell'esempio di semplice app per le funzioni .NET Core seguente, .csproj, {Your}Function.cse host.json sono abilitati 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
      }
    }
  }
}

Abilitare Snapshot Debugger per altri cloud

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

L'esempio seguente mostra l'aggiornamento host.json con l'endpoint dell'agente us Government Cloud:

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

Ecco le sostituzioni supportate dell'endpoint dell'agente Snapshot Debugger:

Proprietà US Government Cloud Cloud per la Cina
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Disabilitare snapshot debugger

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

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

È consigliabile abilitare Snapshot Debugger in tutte le app per semplificare la diagnostica delle eccezioni dell'applicazione.

Passaggi successivi