Asp.net Application Insight中的MVC异常隐藏堆栈跟踪
我正在使用(AI)来尝试查看是否可以记录和查看应用程序引发的异常 为了测试,我在Azure中设置了一个新的MVC项目,该项目链接到一个新的AI资源。一切都很顺利 在阅读了以下指南之后,我创建了一个新的操作方法,在该方法中触发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
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中代表什么?为什么存在?发布时,您可能正在发布发布配置(默认),因此启用了代码优化。您可以切换到发布调试(这会影响性能),或者在发布模式下禁用一些代码优化(更多),如果您愿意放弃的话