处理 asp:ScriptManager 时 mscorlib.dll 中的 ExecutionEngineException (80131506)

ExecutionEngineException (80131506) in mscorlib.dll when processing asp:ScriptManager

我最近刚开始收到 ExecutionEngineException (80131506),当时我 运行 我们任何现有的 ASP.NET 本地应用程序在 .aspx 页面中带有 asp:ScriptManger 标记。

错误信息是:

Application: w3wp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an internal error in the .NET Runtime at IP 00007FFB75209A99 (00007FFB75170000) with exit code 80131506.

这个问题是在我获得 Windows 10 周年更新后开始出现的,所以我认为这些可能是相关的,但这只是一个猜测。

这是我目前的发现:

.NET Call Stack

[[HelperMethodFrame_2OBJ] (System.Reflection.PseudoCustomAttribute._GetSecurityAttributes)] System.Reflection.PseudoCustomAttribute._GetSecurityAttributes(System.Reflection.RuntimeModule, Int32, Boolean, System.Object[]ByRef) mscorlib_ni!System.Reflection.PseudoCustomAttribute.GetCustomAttributes(System.Reflection.RuntimeAssembly, System.RuntimeType, Boolean, Int32 ByRef)+13b mscorlib_ni!System.Reflection.CustomAttribute.GetCustomAttributes(System.Reflection.RuntimeAssembly, System.RuntimeType)+26 mscorlib_ni!System.Reflection.RuntimeAssembly.GetCustomAttributes(Boolean)+26 System_Web_Extensions_ni!System.Web.UI.AssemblyCache.SafeGetAjaxFrameworkAssemblyAttribute(System.Reflection.ICustomAttributeProvider)+1f System_Web_Extensions_ni!System.Web.UI.AssemblyCache.GetAjaxFrameworkAssemblyAttribute(System.Reflection.Assembly)+3e System_Web_Extensions_ni!System.Web.UI.ScriptManager.get_DefaultAjaxFrameworkAssembly()+181 System_Web_Extensions_ni!System.Web.UI.ScriptManager..ctor()+1c ASP.includes_donorsearch_ascx.__BuildControlScriptManager1()+4e ASP.includes_donorsearch_ascx.__BuildControlTree(ASP.includes_donorsearch_ascx)+72 ASP.includes_donorsearch_ascx.FrameworkInitialize()+3c System_Web_ni!System.Web.UI.UserControl.InitializeAsUserControlInternal()+25 System_Web_ni!System.Web.UI.UserControl.InitializeAsUserControl(System.Web.UI.Page)+14 ASP.donorsearch_aspx.__BuildControlDonorSearch1()+87 ASP.donorsearch_aspx.__BuildControlcontentDefault(System.Web.UI.Control)+68 System_Web_ni!System.Web.UI.CompiledTemplateBuilder.InstantiateIn(System.Web.UI.Control)+10 System_Web_ni!System.Web.UI.MasterPage.InstantiateInContentPlaceHolder(System.Web.UI.Control, System.Web.UI.ITemplate)+59 ASP._primary_master.__BuildControlprimaryContent()+114 ASP._primary_master.__BuildControlform3()+120 ASP._primary_master.__BuildControlTree(ASP._primary_master)+ef ASP._primary_master.FrameworkInitialize()+3c System_Web_ni!System.Web.UI.UserControl.InitializeAsUserControlInternal()+25 System_Web_ni!System.Web.UI.MasterPage.CreateMaster(System.Web.UI.TemplateControl, System.Web.HttpContext, System.Web.VirtualPath, System.Collections.IDictionary)+2a1 System_Web_ni!System.Web.UI.Page.get_Master()+38 System_Web_ni!System.Web.UI.Page.ApplyMasterPage()+f System_Web_ni!System.Web.UI.Page.PerformPreInit()+34 System_Web_ni!System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean)+129 System_Web_ni!System.Web.UI.Page.ProcessRequest(Boolean, Boolean)+85 System_Web_ni!System.Web.UI.Page.ProcessRequest()+49 System_Web_ni!System.Web.UI.Page.ProcessRequestWithNoAssert(System.Web.HttpContext)+17 System_Web_ni!System.Web.UI.Page.ProcessRequest(System.Web.HttpContext)+3b ASP.donorsearch_aspx.ProcessRequest(System.Web.HttpContext)+26 System_Web_ni!System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+bd System_Web_ni!System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)+46 System_Web_ni!System.Web.HttpApplication+PipelineStepManager.ResumeSteps(System.Exception)+427 System_Web_ni!System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, System.AsyncCallback)+60 System_Web_ni!System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext)+bb System_Web_ni!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)+32f [[InlinedCallFrame]] System_Web_ni!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)+1f System_Web_ni!DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, System.Web.RequestNotificationStatus ByRef)+3d [[InlinedCallFrame]] System_Web_ni!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)+4d2 [[InlinedCallFrame]] System_Web_ni!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)+1f [[ContextTransitionFrame]]

似乎错误发生在构建控制 ScriptManager 期间的 Ajax 回调中。

ASP.includes_donorsearch_ascx.__BuildControlScriptManager1

我目前的猜测是我的机器出现问题或者 Windows 10 周年纪念版引入了这个问题。

有人以前见过这个问题吗?虽然错误总是出现在 ScriptManger 中,因为这个错误与 GC 有关,但我想知道问题是否出在其他地方,只是出现在这里。

我知道这没什么好继续的,但我认为其他人可能遇到了同样的问题?

谢谢。 约瑟夫

因此,我将 Windows 10 周年更新回滚到版本 1511,Web 应用程序再次开始正常工作。

除了回滚到以前的 Windows 版本之外,您是否找到了解决此问题的方法?我们看到了完全相同的行为,并且我们已经在多台机器上确认它在更新到周年更新后出现。我在这里记录了一个错误:https://connect.microsoft.com/VisualStudio/feedback/details/3111237/access-violation-exception-in-blobtoattributeset-instruction-in-clr-dll

更新: 我能够使用调试器进行探索(通过设置 VS 调试器以启用 .NET Framework 调试并下载所有必要的符号)以达到断点在调用 mscorlib 的 System.Reflection.RuntimeAssembly.GetCustomAttributes() 的异常堆栈跟踪中引用的代码中——对我们来说,它是 Owin.Loader.DefaultLoader.SearchForStartupAttribute()。

最终,我能够准确地 找出正在处理哪个程序集并导致抛出异常。对我们来说,它是 Sax.Barcodes.ASP.dll,一个不再主动维护的 古老的 程序集。幸运的是,我们将能够从我们的网站代码中删除对该程序集的所有引用(我们可能早就应该这样做了)。

我建议您也在调试器中解决这个问题,并准确查明是哪个程序集导致 mscorlib 停滞不前。这将使您确切地知道应该向谁投诉(或者您需要停止哪个集会)。

Microsoft 报告此问题已在 .NET Framework September 2017 Security and Quality Rollup

中解决

引用:

CLR 程序集元数据崩溃 reader。 [367294]