CLR обнаружил неверную программу - PullRequest
2 голосов
/ 15 сентября 2010

Нужна помощь, идеи, чтобы разобраться в этом вопросе.

Мы работаем над приложением, которое вызывает SAP для публикации некоторых данных с помощью ERPConnect. Мы сталкиваемся со следующими проблемами в одном из наших вызовов Entity Framework в нашей службе WCF. Мы используем .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 ]

5 голосов
/ 15 сентября 2010
  1. Вы пытались запустить PEVerify на exe / dll, чтобы увидеть, есть ли какие-либо проблемы?
  2. Вы пробовали запустить на нем ngen, чтобы увидеть, не работает ли ngen?
  3. МожетВы публикуете ошибочный код или маленькое повторение вашей проблемы?

И несколько вещей, которые нужно искать:

  • Является ли лямбда гигантским методом?(то есть, закрывается ли он на много значений?) - Попробуйте переместить его, чтобы это не имело место
  • Используете ли вы тип делегата, который имеет COM-объектв параметрах или выводе?(У меня были проблемы с этим в прошлом)
1 голос
/ 08 ноября 2010

Это когда-нибудь решалось? Я сталкиваюсь с подобной проблемой

InvalidProgramException: Common Language Runtime обнаружил недопустимую программу .

Исключение возникает, когда динамический прокси-сервер пытается установить свойство для первичного ключа типа десятичного. Это тот же случай ошибки, что и у меня. Я могу воспроизвести проблему с помощью простого Gridview и базы данных, состоящей из одной таблицы.

Я использую стандартные шаблоны POCO для генерации контекста и прокси.

Обходной путь - заменить первичный ключ на int, если это возможно в вашей среде. Похоже, ошибка в рамках.

...