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

Azure Application Insights中自定义异常详情不显示问题求助

问题描述

我有一个C#函数应用,其中某函数包含以下代码块:

try
{
    var purchaseItem = await PurchaseCatalogItemForAzureServer.PurchaseItem(serverApi, "----", null);
    if (purchaseItem.isError)
        return purchaseItem.ToNonGeneric();
}
catch (Exception e)
{
    throw new Exception("Id: " + id + " E: " + e.ToString());
}

当自定义异常触发时,在Application Insights中看到的堆栈跟踪信息如下:

Microsoft.Azure.WebJobs.Host.FunctionInvocationException:
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor+<ExecuteWithLoggingAsync>d__26.MoveNext (Microsoft.Azure.WebJobs.Host, Version=3.0.37.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: D:\a\_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:352)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor+<TryExecuteAsync>d__18.MoveNext (Microsoft.Azure.WebJobs.Host, Version=3.0.37.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: D:\a\_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:108)
Inner exception System.Exception handled at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw:
   at AzureFunctionsForPM2.PurchaseItem+<Run>d__0.MoveNext (AzureFunctionsForPM2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: C:\Users\yusuf\Desktop\TestFuctionApp\AzureFunctionsForPM2\AzureFunctionsForPM2\Item\Functions\PurchaseItem.cs:125)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker`2+<InvokeAsync>d__10.MoveNext (Microsoft.Azure.WebJobs.Host, Version=3.0.37.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: D:\a\_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionInvoker.cs:52)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor+<InvokeWithTimeoutAsync>d__33.MoveNext (Microsoft.Azure.WebJobs.Host, Version=3.0.37.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: D:\a\_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:581)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor+<ExecuteWithWatchersAsync>d__32.MoveNext (Microsoft.Azure.WebJobs.Host, Version=3.0.37.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: D:\a\_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:527)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult (System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor+<ExecuteWithLoggingAsync>d__26.MoveNext (Microsoft.Azure.WebJobs.Host, Version=3.0.37.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: D:\a\_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:306)

可以看到自定义异常仅显示行号和Inner exception System.Exception handled at...提示,没有展示详细信息。函数项目未继承FunctionsStartup或Startup类,当前host.json配置如下:

{
    "version": "2.0",
    "logging":
    {
        "LogLevel":
        {
          "Default": "Error",
          "System": "Error",
          "Microsoft": "Error",
          "Host.Results": "Error",
          "Function": "Error",
          "Host.Aggregator": "Error",
        },
        "applicationInsights":
        {
            "samplingSettings":
            {
                "isEnabled": true,
                "excludedTypes": "Request;Dependency;Event;PageView;Trace"
            },
            
            "enableDependencyTracking": false,
            "EnableDependencyTrackingTelemetryModule": false,
            
            "enablePerformanceCountersCollection": false,
            "EnablePerformanceCounterCollectionModule": false,
            
            "enableLiveMetrics": true,
            "EnableRequestTrackingTelemetryModule": false,
            "EnableEventCounterCollectionModule": false,
            "EnableAppServicesHeartbeatTelemetryModule": true
        }
    }
}

如何解决自定义异常详情无法在Application Insights中显示的问题?

解决方案

1. 保留原始异常的内部引用

当前代码重新抛出异常时,未将原始异常作为内部异常传递,导致Application Insights无法追踪完整异常链。修改catch块代码:

catch (Exception e)
{
    throw new Exception($"Id: {id}", e);
}

新抛出的异常会包含原始异常的完整信息,Application Insights就能显示内部异常详情。

2. 调整Application Insights采样配置

当前samplingSettings排除了Trace类型,而异常详情可能通过Trace日志传递。修改excludedTypes移除Trace:

"samplingSettings":
{
    "isEnabled": true,
    "excludedTypes": "Request;Dependency;Event;PageView"
}

避免采样过滤掉异常相关的跟踪信息,确保完整的异常细节被收集。

3. 启用请求跟踪模块

当前配置中EnableRequestTrackingTelemetryModule设为false,该模块负责收集请求相关的异常详情。修改为true:

"EnableRequestTrackingTelemetryModule": true

启用后,Application Insights会更完整地捕获请求过程中的异常信息,包括自定义异常详情。

4. 检查日志级别配置

当前日志级别已设为Error,若需要更详细的排查信息,可临时将Function日志级别调整为Debug:

"Function": "Debug"

排查完成后再改回Error即可。


内容的提问来源于stack exchange,提问作者Yusuf Demir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:39:55