KeyVaultClient 在调试时随机抛出 FatalExecutionEngineError
Posted
技术标签:
【中文标题】KeyVaultClient 在调试时随机抛出 FatalExecutionEngineError【英文标题】:KeyVaultClient throws FatalExecutionEngineError on debug randomly 【发布时间】:2019-11-12 18:34:50 【问题描述】:当我调试 ASP.NET MVC 应用程序时,KeyVaultClient
随机抛出异常:
Managed Debugging Assistant 'FatalExecutionEngineError' : '运行时遇到致命错误。错误地址位于线程 0x6098 上的 0x59eab403。错误代码为 0xc0000005。此错误可能是 CLR 中的错误或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM 互操作或 PInvoke 的用户封送错误,这可能会损坏堆栈。'
我用:
nugetMicrosoft.Azure.KeyVault
3.0.3
Visual Studio 2019 专业版 16.1.4
Microsoft.AspNet.WebApi
5.2.3
没有托管兼容模式
我熟悉了this question,但没有任何帮助。
编辑
启用托管兼容模式后,我得到的错误略有不同:
托管调试助手“FatalExecutionEngineError”在“C:\Program Files (x86)\IIS Express\iisexpress.exe”中检测到问题。 附加信息:运行时遇到致命错误。错误地址位于线程 0x54a8 上的 0x6c0db403。错误代码为 0xc0000005。此错误可能是 CLR 或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM 互操作或 PInvoke 的用户封送错误,这可能会损坏堆栈。 发生了
【问题讨论】:
【参考方案1】:新的托管调试引擎使我们能够比旧实现更快速地添加新功能。这可以从 Visual Studio 2013 仅一年后引入的功能数量就可以看出,包括托管返回值、.NET 64 位编辑和 Continue, Async Callstacks
增强功能以及改进的任务窗口等很少。不幸的是,新的调试引擎仍然不支持一些场景,因此在这些情况下,您将不得不切换回旧引擎。
您得到的错误是由于新的调试引擎不支持的问题。
请尝试以下设置,看看是否会出现相同的错误。
要全局切换回旧版调试引擎,请选择工具/选项
然后选中调试/常规选项卡上的使用托管兼容模式。
全局选项将强制使用旧引擎进行任何启动或附加。
希望对你有帮助。
【讨论】:
我必须承认,事情发生了变化。而不是我上面描述的错误,我得到:Managed Debugging Assistant 'FatalExecutionEngineError' has detected a problem in 'C:\Program Files (x86)\IIS Express\iisexpress.exe'. Additional Information: The runtime has encountered a fatal error. The address of the error was at 0x6c0db403, on thread 0x54a8. The error code is 0xc0000005. This error may be a bug in the CLR or in the unsafe or non-verifiable portions of user code. Common sources of this bug include user marshaling errors for COM-interop or PInvoke, which may corrupt the stack. occurred
以上是关于KeyVaultClient 在调试时随机抛出 FatalExecutionEngineError的主要内容,如果未能解决你的问题,请参考以下文章
使用KeyVaultClient定义Azure KeyVault密钥上的策略
为啥 Dash 在通过 PyCharm 调试时会抛出 TypeError? [关闭]
GetRequestStream 随机抛出 Timeout 异常