“请求详细信息”中未显示例外,但在“应用程序洞察”中的“服务器例外”下未显示

时间:2017-03-17 13:18:00

标签: azure-application-insights

当在我们的系统中执行Web.Api控制器方法期间发生异常时,请求将作为失败发送到Application Insights,我们将异常发送到带有telemetry.TrackException(actionExecutedContext.Exception);的Application Insights

行为:

  • 请求显示为URL失败以及详细信息中的其他一些数据
  • 异常显示在服务器异常下,详细信息中显示了堆栈跟踪。

但是,在查看失败请求的详细信息时(由于服务器异常),异常部分不会显示相关异常 - 只是默认了解如何跟踪异常对于失败的请求

在查看Visual Studio 2017中发送给Application Insights的内容时,我发现异常和请求是相关的(相同的操作ID)。

但它会在去往详细页面的路上丢失。

我们使用ASP.NET WebApi和OWIN,默认的Application Insights安装(nuget包)和applicationinsights-owinextensions(包括那里描述的设置OWIN扩展的步骤)。

我认为How to link exceptions to requests in Application Insights on Azure?不适用,因为数据在Visual Studio AppInsights查看器中显示为相关,并且在内部异常的详细信息视图中单击显示遥测:此操作时AppInsights。

也许相关: Application Insights显示2个失败请求。第一个显示HTTP方法(例如GET),第二个显示HTTP方法,并且持续时间略长。

感谢提示: - )

2 个答案:

答案 0 :(得分:1)

当您使用applicationinsights-owinextensions时,我检查了用于初始化操作ID的OperationIdTelemetryInitializer代码。我相信你没有看到遥测器在细节刀片上正确链接的原因是这段代码没有设置operation.parentId字段。要验证这是否正确,您可以检查发送的有效负载以检查是否已设置parent.id字段。我们在官方支持的.NET SDK sets operation.id, as well as operation.parentId中提供的初始化程序。

所以我的建议是,一旦你确认,确实没有设置parentId,就可以修复owin-extensions中使用的OperationIdTelemetryInitializer,这样就可以开始设置parentId,或者用ApplicationInsights.config替换它。后一种方法可以很容易地证实这一理论。

答案 1 :(得分:0)

解决方案是从应用程序见解配置文件中删除Microsoft.ApplicationInsights.Web.OperationCorrelationTelemetryInitializer

这个初始化程序阻碍了applicationinsights-owinextensions nuget包中的初始化程序。