System.InvalidProgramException:公共语言运行时检测到无效程序

时间:2018-06-28 15:36:27

标签: serialization clr zeroformatter

全部

我正在使用ZeroFormatter进行大对象的序列化,有时在序列化错误时会出现以下错误,在使用ZeroFormatter的并集概念进行继承后会观察到此问题。

以下是异常详细信息:

  

System.InvalidProgramException:公共语言运行时检测到无效程序。
  在ZeroFormatter.DynamicObjectSegments.ZeroFormatter_Formatters_DefaultResolver.Colibrium.Common.Ontology.Rating.Factors.RateFactor $ Formatter.Serialize(Byte []&,Int32,RateFactor)
  在ZeroFormatter.Formatters.CollectionFormatter 3.Serialize(Byte[]& bytes, Int32 offset, TCollection value)
at ZeroFormatter.DynamicObjectSegments.ZeroFormatter_Formatters_DefaultResolver.Colibrium.Common.Ontology.Rating.RateClass$Formatter.Serialize(Byte[]& , Int32 , RateClass )
at ZeroFormatter.Formatters.CollectionFormatter
处。3.Serialize(Byte []&bytes,Int32偏移量,TCollection值)
  在ZeroFormatter.DynamicObjectSegments.ZeroFormatter_Formatters_DefaultResolver.Colibrium.Common.Ontology.Rating.PackagePlan $ Formatter.Serialize(Byte []&,Int32,PackagePlan)
处   在ZeroFormatter.Formatters.CollectionFormatter 3.Serialize(Byte[]& bytes, Int32 offset, TCollection value)
at ZeroFormatter.DynamicObjectSegments.ZeroFormatter_Formatters_DefaultResolver.Colibrium.Common.Ontology.Rating.Package$Formatter.Serialize(Byte[]& , Int32 , Package )
at ZeroFormatter.Formatters.CollectionFormatter
处。3.Serialize(Byte []&bytes,Int32偏移量,TCollection值)
  在ZeroFormatter.DynamicObjectSegments.ZeroFormatter_Formatters_DefaultResolver.Colibrium.Common.Ontology.Rating.PackageGroup $ Formatter.Serialize(Byte []&,Int32,PackageGroup)
处   在ZeroFormatter.Formatters.CollectionFormatter 3.Serialize(Byte[]& bytes, Int32 offset, TCollection value)
at ZeroFormatter.DynamicObjectSegments.ZeroFormatter_Formatters_DefaultResolver.Colibrium.Common.Ontology.Rating.Group.GroupRatingResults$Formatter.Serialize(Byte[]& , Int32 , GroupRatingResults )
at ZeroFormatter.ZeroFormatterSerializer.CustomSerializer
1.Serialize [T](T obj)
  在Colibrium.Utility.Library.ObjectConverter`1.ConvertO   bjectToBinaryZeroFormatter(T p_object)

     

在C:\ TFS \ UPMC \ Repos \ Colibrium.Utility.Library \ ObjectConverter.cs:第407行

2 个答案:

答案 0 :(得分:0)

DynamicFormatter的源代码,该库似乎试图通过在运行时生成CLR类型以将用户类型序列化/反序列化为字节数组来优化用户类型的格式。根据该错误,看来此IL代中肯定有一个错误。

您应该在ZeroFormatter project issues中报告此问题,但请注意,由于跟踪InvalidProgramException非常困难,您可能需要一种重现此问题的好方法。

答案 1 :(得分:0)

如果您碰巧正在使用Application Insights,则可能是由于 issue 18323 reported to .Net Core CRL而引起的异常

该问题已在.Net核心上报告,但由于该解决方案似乎也可以在.Net框架上进行报告,因此我也已在.Net Framework上进行了报告。

  

ApplicationInsights已转为使用预安装的站点扩展模型,并且不再具有冒犯性。此外,私有Site Extension将不会更新,因为它估计会在一个月内被弃用。您应该能够通过Azure的AppService刀片中的ApplicationInsights配置升级到预安装的站点扩展。

     

但是,如果要立即解决私有站点扩展,可以通过删除站点扩展中的以下两个文件并重新启动站点来解决此问题:

     
      
  • Instrumentation32 \ ProductionBreakpoints_x86.config
  •   
  • Instrumentation64 \ ProductionBreakpoints_x64.config
  •   
     

这将有效删除导致问题的AppInsights扩展部分。