C#EntityFramework4公共语言运行时检测到无效程序错误?如何调试/修复“公共语言运行时检测到无效程序”错误?这到底是什么意思?我有一个C#MVC2Web应用程序,它部署到位于同一IIS7.5Web服务器(x64)上的两个网站。一个是实时站点(使用Release配置部署),第二个是beta站点(使用专为此项目创建的新Beta配置部署)。这两个网站是:DefaultWebsite/my_appBeta/my_app在测试网站上选择分页PO时,会抛出“InvalidProgramDetected”异常。在实时网站上运行完全相同的代码可以完美运行。你为什么要这样做?编辑:我在服务器上安装了VisualStudio,发现了导致问题的实际行和堆栈跟踪:varlist=ObjectContext.ObjectSet.AsQueryable();inttotalRecords=list.Count();varpaged=list.Skip((page>0?page-1:0)*rows).Take(rows);这是带有堆栈跟踪的异常消息:{System.InvalidProgramException:公共语言运行时检测到无效程序。atSystem.Data.Entity.DynamicProxies.PurchaseOrderListVie_96479BFE9FA60F4C53137C56C1A1B2A11D90FF5AFFDC20383CC68E0A750792E3.set_Total(Decimal)atlambda_method(Closure,Shaper)atSystem.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2constructEntityDelegate,EntityKeyentityKey,EntitySetentitySet)在lambda_method(Closure,Shaper)在System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shapershaper)在System.Data.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext()在System.Collections.Generic.List`1..ctor(IEnumerable`1集合)在System.Linq.Enumrable.ToList[TSource](IEnumerable`1source)atMyApp.Controllers.PurchaseOrderController.GetPurchaseOrderList(Int32page,Int32rows,Stringsidx,Stringsord)inC:srcMyApp.2010MyApp.UIControllersPurchaseOrderList.cs:line11}这个新信息准确显示问题是什么,但事实并非如此。希望对实体框架有很好理解的人可以对此有所了解:System.Data.Entity.DynamicProxies.PurchaseOrderListVie_96479B_etc.set_Total(Decimal)是发生错误的行。现在我在sqlmanagementstudio中运行查询,结果不为null,Total也不为null。那么为什么调用set_Total()有问题呢?这是POCO定义Total字段(由T4模板生成)的方式:[Decimal][Required][DisplayName("Total")]publicvirtualdecimalTotal{get;set;实时站点和测试站点之间的主要区别在于构建配置。但是这两种配置都将每个项目设置为“任何CPU”。我们所有的开发机器和服务器都是64位的。导致此问题的网站的IIS配置可能有所不同吗?我试过运行PEVerify-但它只是说“所有类和方法都已验证”。PEVerify如何帮助解决此类问题?顺便说一句,我可以在标题中看到大约15个带有“公共语言运行时检测到无效程序问题”的问题。我的问题不是重复的,并且有几个独特的特征不同于其他具有类似标题的问题(15个中只有一个是关于实体框架的——其余的是关于反射或TFS的)我今天在部署时遇到了这个问题对我们的QA环境实施linq的Web应用程序。问题原来是Windows2008R2服务器上的IIS设置。在应用程序池的“高级设置”下,“启用32位应用程序”设置为“假”。我将它设置为True,现在我的应用程序看起来像是在开发服务器上,它恰好是Windows2003服务器。我希望这有帮助。对我来说,当我向实体模型添加视图时发生了这种情况。默认情况下,设计器将所有列EntityKey属性设置为true。当我为所有小数/数字列设置false时,错误消失。Thes您是否正在尝试在另一台计算机上部署测试版配置?您的应用程序池设置是否相同(即经典版与集成版、相同的.net版本)?您是否尝试过清理解决方案并重新部署到新位置?您是否尝试过将测试版部署到发布位置?(确保在发布之前删除所有文件;我很好奇是否剩余的动态加载依赖项可能会导致问题)更新:优秀的更多信息。在第3行,您定义了变量page,同时还使用了先前定义的名为page的变量。如何编译?尝试注释该代码或至少尽量不要跳过它。注意:我认为Count()后跟Take()可能会执行两次查询。注2:我只使用过EntityFrameworkv4DatabaseFirst开发,但我不记得直接针对ObjectSets进行编程。通常它是您的实体类(例如,MyContext.Orders)...可能在该对象上编程并设置Decimal值。此属性的模型是否具有使其不标准的任何属性?有一个主要错误!!,我认为它在Entity框架中有decimal字段列属性,我遇到了这个讨厌的错误消息,我比较了从2个单独的表(同一个表)中获取数据,一个具有Integer列id,另一个带有十进制列id,对于带有整数列的表没问题相同的代码运行完美,对于带有十进制列的表弹出此错误消息我检查了sqlserveriis和环境,我什至认为格式化PC,这很奇怪而且错误信息不明确。希望这种方法可以帮助将来遇到此类错误的任何人。以上是C#学习教程:C#EntityFramework4commonlanguageruntimedetectedaninvalidprogramerror?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
