CLR检测到无效程序

时间:2010-09-15 11:20:04

标签: c# .net entity-framework clr sap

需要任何帮助,想法来解决这个问题。

我们正在开发一个应用程序,该应用程序调用SAP以使用ERPConnect发布一些数据。我们在WCF服务中的一个Entity Framework调用中遇到以下问题。我们使用的是.NET4.0,Win 2008 Server。

活动中包含以下信息:

exception in getting ****getrebateproposal**-****Common Language Runtime detected an invalid program.******   at System.Data.Entity.DynamicProxies.RebateProposal_E1004D9B0153012E0A7A09FC9B574872909349EC992253740AB3C066FC63CF4D.set_Id(Decimal )
       at lambda_method(Closure , Shaper )
       at System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet)
       at lambda_method(Closure , Shaper )
       at System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper)
       at System.Data.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext()
       at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       at CommercialTermsRepository.GetRebateProposalsAmountToPay(String rebateAgreement) in D:\Projects\TFS\CIT V2\DataModel\BusinessObjects\CommercialTermsRepository.cs:line 794
       at SAPInterface.RebateProposalService.SetZv41Data(List`1 uploadRebates) in D:\Projects\TFS\CIT V2\Server\UserService\RebateProposalService.svc.cs:line 187

2 个答案:

答案 0 :(得分:5)

  1. 您是否尝试在exe / dll上运行PEVerify以查看是否存在任何问题?
  2. 您是否尝试在其上运行ngen以查看ngen是否失败?
  3. 您可以发布失败的代码或您的问题的小型副本吗?
  4. 还有一些事情需要寻找:

    • lambda是一种巨大的方法吗? (也就是说它是关闭批次的值?) - 尝试将其移出以便不是这种情况
    • 您是否正在使用params或输出中具有COM对象的委托类型? (我以前遇到过这个问题)

答案 1 :(得分:1)

这是否得到解决?我遇到了类似的问题

InvalidProgramException: Common Language Runtime detected an invalid program

当动态代理尝试为十进制类型的主键设置属性时,会发生异常。这与我的错误案例相同。我能够使用简单的Gridview和由一个表组成的数据库来重现问题。

我正在使用标准的POCO模板来生成上下文和代理。

如果在您的环境中可以实现,则解决方法是将主键更改为int。它看起来像是框架中的一个错误。