Asp.net Application Insight中的MVC异常隐藏堆栈跟踪

Asp.net Application Insight中的MVC异常隐藏堆栈跟踪,asp.net,azure,azure-application-insights,Asp.net,Azure,Azure Application Insights,我正在使用(AI)来尝试查看是否可以记录和查看应用程序引发的异常 为了测试,我在Azure中设置了一个新的MVC项目,该项目链接到一个新的AI资源。一切都很顺利 在阅读了以下指南之后,我创建了一个新的操作方法,在该方法中触发NullReferenceException。我真的很喜欢将遥测数据发送给人工智能的方式。调试应用程序时,我可以在application Insights搜索窗口内查看Visual Studio中引发的异常。它为我提供了以下跟踪: System.NullReferenceEx

我正在使用(AI)来尝试查看是否可以记录和查看应用程序引发的异常

为了测试,我在Azure中设置了一个新的MVC项目,该项目链接到一个新的AI资源。一切都很顺利

在阅读了以下指南之后,我创建了一个新的操作方法,在该方法中触发
NullReferenceException
。我真的很喜欢将遥测数据发送给人工智能的方式。调试应用程序时,我可以在application Insights搜索窗口内查看Visual Studio中引发的异常。它为我提供了以下跟踪:

System.NullReferenceException: Object reference not set to an instance of an object.  
    at  WebApplicationInsights.Controllers.HomeController.Error (HomeController.cs:33) (WebApplicationInsights, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)  
    at  lambda_method (Anonymously Hosted DynamicMethods Assembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)  
    at  System.Web.Mvc.ActionMethodDispatcher.Execute (System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)  
    .  
    .  
    at  System.Web.HttpApplication.ExecuteStep (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
System.NullReferenceException:  
   at lambda_method (Anonymously Hosted DynamicMethods Assembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)  
   at System.Web.Mvc.ActionMethodDispatcher.Execute (System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)  
   .  
   .  
   at System.Web.HttpApplication.ExecuteStep (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
如您所见,异常是从HomeController引发的

现在,在发布到Azure之后,我通过访问live网站再次引发了此异常。检查Azure门户中的异常,我得到以下stacktrace:

System.NullReferenceException: Object reference not set to an instance of an object.  
    at  WebApplicationInsights.Controllers.HomeController.Error (HomeController.cs:33) (WebApplicationInsights, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)  
    at  lambda_method (Anonymously Hosted DynamicMethods Assembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)  
    at  System.Web.Mvc.ActionMethodDispatcher.Execute (System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)  
    .  
    .  
    at  System.Web.HttpApplication.ExecuteStep (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
System.NullReferenceException:  
   at lambda_method (Anonymously Hosted DynamicMethods Assembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)  
   at System.Web.Mvc.ActionMethodDispatcher.Execute (System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)  
   .  
   .  
   at System.Web.HttpApplication.ExecuteStep (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
您可以观察到stacktrace中的最后一个调用丢失。为什么?
本地调试时引发的异常也存在于Azure门户中,但是此异常未错过最后一次调用。请参见此屏幕截图:


附加问题:匿名托管的DynamicMethods程序集在stacktrace中代表什么?为什么存在?

发布时,您可能正在发布发布配置(默认),因此启用了代码优化。您可以切换到发布调试(这会影响性能),或者在发布模式下禁用一些代码优化(更多),如果您愿意放弃的话