.NET 5应用配置Application Insights后异常不显示堆栈跟踪如何解决
你需要补充/检查以下配置项:
- 补充Host的Application Insights集成配置
你目前Program.cs的Host构建逻辑缺少关键的.UseApplicationInsights()调用,会导致App Insights和应用宿主的集成不完整,无法自动捕获完整异常上下文和堆栈。补充后的代码如下:
Host.CreateDefaultBuilder(args) .UseApplicationInsights() // 新增这行配置 .ConfigureLogging(logging => { logging.AddApplicationInsights(); logging.AddFilter<ApplicationInsightsLoggerProvider>(string.Empty, LogLevel.Trace); })
- 调整App Insights服务配置,开启完整异常跟踪
修改Startup.cs中的AddApplicationInsightsTelemetry配置,明确开启异常跟踪,同时可禁用自适应采样避免异常详情被采样丢弃:
services.AddApplicationInsightsTelemetry(options => { options.EnableExceptionTracking = true; // 不需要禁用采样的话也可以单独配置采样规则排除异常类型 options.EnableAdaptiveSampling = false; });
- 检查全局异常处理逻辑的上报方式
如果你使用了自定义全局异常中间件、过滤器,必须将完整的Exception对象传递给TelemetryClient的TrackException方法,不要仅上报错误字符串,否则不会附带堆栈信息,示例如下:
public void OnException(ExceptionContext context) { // 正确写法:传入完整异常对象 _telemetryClient.TrackException(context.Exception); // 错误写法:仅传消息不会携带堆栈 // _telemetryClient.TrackException(new Exception(context.Exception.Message)); context.ExceptionHandled = true; }
- 确认发布包包含PDB调试符号
生产部署时不要移除PDB文件,发布配置中需将调试符号设置为「可移植PDB」或「全部」,无PDB的情况下无法解析生成堆栈跟踪。
内容的提问来源于stack exchange,提问作者Enrico
相关产品推荐
相关产品推荐

