分享方式:


在 Azure Functions 中啟用適用於 .NET 和 .NET Core 應用程式的快照偵錯工具

快照偵錯工具目前適用於在 Windows 服務方案上 Azure Functions 上執行的 ASP.NET 和 ASP.NET Core 應用程式。

建議您在使用快照偵錯工具時,於基本層或更高服務層執行您的應用程式。 對於大部分的應用程式:

  • 免費和共用服務層級沒有足夠的記憶體或磁碟空間來儲存快照集。
  • 使用量層目前不適用於快照偵錯工具。

快照偵錯工具已預先安裝為 Azure Functions 執行階段的一部分,因此您不需要新增額外的 NuGet 套件或應用程式設定。

先決條件

在您的函數應用程式中啟用 Application Insights 監視

啟用快照偵錯工具

若要在函式應用程式中啟用快照偵錯工具,請將 snapshotConfiguration 屬性新增至 host.json 檔案,並重新部署函式。 例如:

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

針對應用程式產生可觸發例外狀況的流量。 然後等待 10 到 15 分鐘,讓快照集傳送到 Application Insights 執行個體。

您可以檢查 .NET 函數應用程式檔案,確認快照偵錯工具已啟用。 例如,在下列簡單的 .NET 函數應用程式中,.NET 應用程式的 .csproj{Your}Function.cshost.json 會顯示已啟用快照偵錯工具:

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

啟用其他雲端的快照偵錯工具

目前,唯一需要端點修改的區域是 Azure Government由 21Vianet 營運的 Microsoft Azure

下列是使用美國政府雲端代理程式端點更新顯示的 host.json 範例:

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

這些是快照偵錯工具代理程式端點支援的覆寫:

屬性 美國政府雲端 中國雲端
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

停用快照偵錯工具

若要停用函數應用程式中的快照偵錯工具,請藉由將 snapshotConfiguration.isEnabled 屬性設定為 false 來更新 host.json 檔案。

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

下一步