尝试调试 WCF 服务代码(MSVS 2013)时,在“添加监视”功能上获取“表达式评估器中的内部错误”

Posted

技术标签:

【中文标题】尝试调试 WCF 服务代码(MSVS 2013)时,在“添加监视”功能上获取“表达式评估器中的内部错误”【英文标题】:Get "Internal error in the expression evaluator" on "Add watch" function when trying to debug WCF service code (MSVS 2013) 【发布时间】:2014-03-18 05:53:00 【问题描述】:

几天前,我将我的解决方案移至 MSVS 2013。它工作正常,除了一件事:当我尝试调试 WCF 服务的代码时它可以工作,但是当我想查看任何变量的状态时,它会显示:“内部错误在表达式评估器中”。添加监视功能在客户端正常工作,但在服务代码中它损坏了。我正在尝试调试在本地主机上运行的我自己的 WCF 服务。你能帮我解决这个问题吗?

这里是 MSVS 信息: 微软视觉工作室专业版 2013 版本 12.0.30110.00 更新 1 微软 .NET 框架 版本 4.5.51641 操作系统:Windows 8.1

【问题讨论】:

在 MSVS2012 中运行良好(Microsoft Visual Studio Professional 2012 版本 11.0.61030.00 更新 4 Microsoft .NET Framework 版本 4.5.51641) 我也看到了这条消息,刚刚从 2012 年升级到 2013 年。 我必须回滚到 2012 年,在 2012 年它可以正常工作,而 2013 年对我来说仍然坏了 在 VS 2013 中也出现同样的错误 【参考方案1】:

这可能是 Visual Studio 2013 附带的新(托管)调试引擎中的错误。尝试打开 托管兼容模式(这实际上将其转换为 2013 之前的调试引擎),位于在工具 - 选项 - 调试下:

如果这解决了问题,那么我建议尝试用一个小项目来重现它,然后在Connect 上报告它,以便可以修复它。

@bjhuffine cmets 下面有其他方法可以启用兼容模式,而无需全局禁用它(例如,每个项目)。更多信息在这里:https://devblogs.microsoft.com/devops/switching-to-managed-compatibility-mode-in-visual-studio-2013/

【讨论】:

这解决了我与 Visual Studio 2015 CTP 6 相同的问题。 此配置解决了问题,但诊断工具停止工作。 这解决了我在 Visual Studio 2015 RTM 中的相同问题(并禁用了新的诊断工具),但我在 Visual Studio 2013 中从未遇到过这个问题。我必须在我的家用电脑上测试一下比较。 你是个天才,我的朋友!我还发现这不仅增加了进一步的解释,而且如果您不想要大锤全局更改,还可以显示其他方法。 blogs.msdn.com/b/visualstudioalm/archive/2013/10/16/… 只是添加;如果这些选项显示为灰色,则需要停止调试;)【参考方案2】:

根据问题"Internal error in the expression evaluator"“使用托管兼容模式”停止“编辑并继续”。 尝试检查 工具 - 选项 - 调试下的“使用旧版 C# 和 VB 表达式求值器”选项。

【讨论】:

【参考方案3】:

我尝试了Igal's answer,但它对我不起作用,但我找到了一个适合我的解决方案。我清除了手表并再次开始添加项目。我注意到,如果我尝试添加不在当前子或函数内的项目,则会发生内部错误。

我通过从它们的子项或函数中添加其他项目解决了这个问题,并且再次没有错误。

【讨论】:

在我的情况下,即使我在方法范围内添加了监视项,也会发生错误,但是这个带有“使用托管兼容模式”的解决方案对我有帮助。【参考方案4】:

Michael Freidgeim 的回答帮助我调试了我的问题。但我想为我的问题添加更多细节。与提问者的问题略有关系,但他的错误极具误导性。

我们使用带有 GridDateTimeColumn 的 Telerik 控件 RadGrid。这些网格上的 MinDate 属性默认为 01/01/1980,因此如果您将日期绑定到此列,该日期小于该日期,您将看到此错误。奇怪的是,原来的绑定和显示并没有导致问题,只是在导航到另一个页面时才抛出错误。

【讨论】:

以上是关于尝试调试 WCF 服务代码(MSVS 2013)时,在“添加监视”功能上获取“表达式评估器中的内部错误”的主要内容,如果未能解决你的问题,请参考以下文章

WCF 服务项目在调试中运行,但在发布时崩溃

想将图像从 android 发布到 WCF 休息服务

WCF 休息 - 没有找到元素错误

调试 WCF Web 服务故障

Ajax POST 调用不适用于 WCF

代码在尝试打开 QDialog 时冻结