You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否针对Azure App Service WebJobs使用Snapshot Debugger?

针对Azure App Service WebJobs使用Snapshot Debugger的方案

当然可以!Snapshot Debugger 完全支持运行在Azure App Service下的.NET WebJobs(不管是连续型还是触发型的可执行文件),我会把配置和使用的关键步骤整理给你:

前提条件

  • 你的WebJobs基于 .NET Framework 4.6.1+ 或者 .NET Core 2.1+ 开发
  • 已经为你的App Service关联了一个Application Insights实例(快照数据会存储在这里)

具体配置步骤

  1. 在Azure门户启用Snapshot Debugger
    登录Azure门户,找到你的目标App Service(WebJobs是依附在App Service下的),进入「监视」菜单下的「快照调试器」选项,点击「启用」,并选择与WebJobs匹配的运行时(.NET Framework 或 .NET Core)。

  2. 添加NuGet包到WebJobs项目
    根据你的.NET版本,在项目中安装对应的Snapshot Collector包:

    • 对于.NET Framework项目:安装 Microsoft.ApplicationInsights.SnapshotCollector
    • 对于.NET Core项目:安装 Microsoft.ApplicationInsights.SnapshotCollector
  3. 配置Application Insights连接
    确保你的WebJobs能连接到Application Insights:

    • 最简单的方式是在App Service的「配置」-「应用程序设置」里添加 APPINSIGHTS_INSTRUMENTATIONKEY,值为你的Application Insights实例的Instrumentation Key
    • 也可以在WebJobs的配置文件(比如appsettings.json或App.config)中直接配置Instrumentation Key
  4. 设置快照触发规则
    你可以通过两种方式触发快照:

    • 异常触发:默认情况下,Snapshot Debugger会自动捕获未处理的异常并生成快照;你也可以在代码中标记特定异常类型来触发,比如在异常处理逻辑中添加快照收集的代码
    • 手动触发:如果你想在特定代码段生成快照,可以调用Snapshot Collector的API,比如在关键代码处添加:
      var snapshotCollector = SnapshotCollector.Current;
      if (snapshotCollector != null)
      {
          await snapshotCollector.RequestSnapshotAsync();
      }
      
  5. 查看捕获的快照
    当快照生成后,你可以在Application Insights的「故障排除」-「快照调试器」页面找到对应的快照,点击进去就能查看完整的调用栈、变量值和代码上下文,帮助你定位问题。

注意事项

  • 对于触发型WebJobs,要确保作业运行的时间足够长,让Snapshot Debugger有机会捕获并上传快照(如果是短运行的作业,可能需要调整触发逻辑或者手动触发)
  • 确保App Service的服务计划有足够的资源来支持快照收集(基本层及以上的服务计划都支持)
  • 如果你的WebJobs是通过部署包发布的,确保NuGet包已经正确包含在部署包中

内容的提问来源于stack exchange,提问作者Howard Hoffman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:01:20