在我们的应用程序中,我们有一个错误页面,该页面应捕获该应用程序中的所有错误。
<customErrors mode="On" defaultRedirect="~/Content/Error.html" />
此错误页面实际上会吐出“发生了意外错误,请使用以下代码与支持人员联系:$ HASH” 。 $ HASH(设置为cookie值)代表一个ID,该ID指向日志中捕获的异常。
但是,当我们查找某些应用程序错误的哈希和数据时,会发现以下内容。
Exception information:
Exception type: InvalidOperationException
Exception message: The view 'Error' or its master was not found or no view
engine supports the searched locations. The following locations were searched:
SomeLocation\Error.spark
Shared\Error.spark
SomeLocation\Error.shade
Shared\Error.shade
~/Views/SomeLocation/Error.aspx
~/Views/SomeLocation/Error.ascx
~/Views/Shared/Error.aspx
~/Views/Shared/Error.ascx
~/Views/SomeLocation/Error.cshtml
~/Views/SomeLocation/Error.vbhtml
~/Views/Shared/Error.cshtml
~/Views/Shared/Error.vbhtml
at System.Web.Mvc.ViewResult.FindView(ControllerContext context)
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at <<More Internals>>
这意味着ASP试图使用任何视图引擎来显示我们的原始错误,抛出自己的错误,破坏我们的原始错误。
我期望要记录的原始应用例外。没有上面显示的内容。我不希望Asp会在~/Content/Error.html
以外的任何位置查找错误。
我尝试过的快速修复方法
customErrors
defaultRedirect
设置到ViewEngines也要查看的位置。结果:一切都破了web.config
中设置的位置。结果:由于未设置cookie数据,因此错误哈希丢失。答案 0 :(得分:2)
尝试添加
<Add Type="Microsoft.ApplicationInsights.Web.ExceptionTrackingTelemetryModule, Microsoft.AI.Web">
<EnableMvcAndWebApiExceptionAutoTracking>false</EnableMvcAndWebApiExceptionAutoTracking>
</Add>
到ApplicationInsights.config
来源:https://github.com/Microsoft/ApplicationInsights-dotnet-server/issues/921
来源:AiHandleErrorAttribute Vs. Built-In auto added Action Filter provided by Application Insights