当前位置: 首页 > 知识库问答 >
问题:

Azure Monitor/Application Insights未显示错误的堆栈跟踪

鲜于致远
2023-03-14

我有一个ASP.NET Core3.0Web API托管在Azure应用服务上。我正在试图弄清楚为什么它会在一个控制器操作方法中抛出一个500内部服务器错误。我已经建立了应用程序洞察力,我可以在Azure Portal上的“失败”页面上看到有500个异常。但是,我看不到它们的堆栈跟踪。在Application Insights或Azure Monitor中打开堆栈跟踪报告需要做些什么吗。附注。即使我的API在.NET Core2.2上,它也不显示堆栈跟踪,所以它不是.NET Core3.0的东西。

下面是一些截图:

共有1个答案

娄德运
2023-03-14

如果您没有看到堆栈跟踪,则必须确保您的代码以下面描述的方式之一记录异常

https://docs.microsoft.com/en-us/azure/azure-monitor/app/asp-net-exceptions#异常

在MVC中,您必须使用以下内容:

public override void OnException(ExceptionContext filterContext)
        {
            if (filterContext != null && filterContext.HttpContext != null && filterContext.Exception != null)
            {
                //If customError is Off, then AI HTTPModule will report the exception
                if (filterContext.HttpContext.IsCustomErrorEnabled)
                {   //or reuse instance (recommended!). see note above
                    var ai = new TelemetryClient();
                    ai.TrackException(filterContext.Exception);
                }
            }
            base.OnException(filterContext);
        }
public void ConfigureServices(IServiceCollection services)
{
    Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions aiOptions
                = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    // Disables adaptive sampling.
    aiOptions.EnableAdaptiveSampling = false;

    // Disables QuickPulse (Live Metrics stream).
    aiOptions.EnableQuickPulseMetricStream = false;
    services.AddApplicationInsightsTelemetry(aiOptions);
}

如本文所述:

https://docs.microsoft.com/en-us/azure/azure-monitor/app/asp-net-core

 类似资料:
  • 这可能在JUnit文档中已经很明显了,但似乎找不到它,也不记得是否有我将要描述的解决方案。 然后我们得到这个: 现在我得到了一些几乎没用的东西。但是,我希望看到完整的enchilada,整个堆栈跟踪。但是我似乎没有找到使用JUnit这样做的方法,除了在catch/try块中添加测试用例以将堆栈跟踪打印到标准错误(难看): 我讨厌这样做,因为它污染了(IMO)我的测试用例逻辑;而且它是手动的,我必须

  • 在另一种情况下,经过去模糊处理后,我得到的不是正常的堆栈跟踪,而是如下所示: 是什么原因,有可能莫名其妙地从这得到一个正常的堆栈跟踪?

  • 我试图在Google Play Store中调试我的应用程序的几个崩溃,但是Play Store中显示的堆栈跟踪显示的是Java文件名和行号,而不是直接引用我的Kotlin代码。我在Android Studio中查看了Java代码,但是行号不匹配。 为了查看Java代码,我转换成字节代码,然后反编译成Java。在Android Studio中还有一个更直接的选项“将Kotlin反编译为Java”,

  • 我已经安装了sdk,并添加了,但是为什么在运行时会出现这个错误呢?

  • 我使用以下代码打印try-catch块中发生的任何异常,但是当异常发生时,logback不会打印完整的堆栈跟踪,而是写入一行错误(它没有明确说明是什么导致了它。我如何在logback输出中打印完整的堆栈跟踪? 尝试捕获异常的catch块 日志返回错误输出:

  • 当500内部服务器发生时,我想抑制tomcat显示的堆栈跟踪。我在web.xml中包含了一个定制的error.html页面,并提到了文件位置和错误代码 进行上述更改后,对于所有 API 的 tomcat 返回 404 未找到。