ASP.Net 核心 - Application Insights - 堆栈跟踪

ASP.Net Core - Application Insights - Stack Trace

我正在设置一个非常简单的 ASP.Net 核心 (2.2) MVC Web 应用程序。我希望能够看到任何应用程序错误(500 秒)以及导致错误的原因,因此 Application Insights 似乎是值得关注的地方。

如果我进入 Application Insights/Failures(操作选项卡 - 请参见下面的屏幕截图),我能够看到所有 500 个错误中的 graph/count 个。我可以单击 "DRILL INTO" 按钮并查看大量详细信息(事件时间、请求名称等),但似乎无法获得有关错误/行号实际原因的任何详细信息。

基本上,我和这个人有完全相同的问题: Azure Monitor / Application Insights not showing stack trace for errors (我的截图看起来一模一样)。

当我深入了解异常详细信息时,我得到如下信息:

想要得到这样的东西:

我确实看到了有关通过 Nuget 将 Application Insights 添加到我的解决方案并将

 services.AddApplicationInsightsTelemetry();

进入Startup/ConfigureServices方法。

我还看到您可以查看 Kudu 日志等...但我真的希望所有这些都可以在 Application Insights 中轻松访问。

有什么建议吗?

500 Internal server error 表明您正在寻找堆栈跟踪以确定哪里出了问题。您的示例中未提供任何代码,但您需要用 try catch 包围您的代码,然后记录异常以获取堆栈跟踪,或者您可以使用 TelemetryClient,如下所示:

var telemetry = new TelemetryClient();
...
try
{ ...
}
catch (Exception ex)
{
   // Set up some properties:
   var properties = new Dictionary <string, string>
     {{"Game", currentGame.Name}};

   var measurements = new Dictionary <string, double>
     {{"Users", currentGame.Users.Count}};

   // Send the exception telemetry:
   telemetry.TrackException(ex, properties, measurements);
}

可在 Microsoft

找到更多信息

好的 - 我想我解决了我自己的问题。原来我之前添加了 Serilog(有点忘记了),它在进入 AI 之前捕获了所有错误。当我从 Program.cs 和 Startup.cs 中删除 Serilog 配置代码时,应用程序异常开始与完整的调用堆栈一起显示在 Application Insights/Failures 中。感谢您的建议!