OData库Edm.Internal.Cache空引用异常

OData库Edm.Internal.Cache空引用异常,odata,ado.net-entity-data-model,Odata,Ado.net Entity Data Model,我们使用的是2011年10月微软OData库的CTP。一段时间以来,包括以前的版本,我们一直在库内部深处遇到模型序列化时间歇性的空引用异常 System.NullReferenceException 在Microsoft.Data.Edm.Internal.Cache2.GetValue(TContainer容器, Func2计算,Func`2一次循环) 在 Microsoft.Data.Edm.Csdl.Internal.CSDLMantics.CSDLMantics StructuredTy

我们使用的是2011年10月微软OData库的CTP。一段时间以来,包括以前的版本,我们一直在库内部深处遇到模型序列化时间歇性的空引用异常

System.NullReferenceException

在Microsoft.Data.Edm.Internal.Cache
2.GetValue(TContainer容器,
Func
2计算,Func`2一次循环)

在 Microsoft.Data.Edm.Csdl.Internal.CSDLMantics.CSDLMantics StructuredTypeDefinition.FindProperty(字符串 (姓名)

位于Microsoft.Data.OData.ValidationUtils.ValidatePropertyDefined(字符串 属性名称,IEdmStructuredType所有者StructuredType)

在 Microsoft.Data.OData.Json.ODataJsonWriterUtils.WriteProperty(JsonWriter jsonWriter、IODataUrlResolver、urlResolver、IEdmModel模型、, ODataProperty属性,IEdmStructuredType所有者类型,布尔值 allowNamedStreamProperty,Uri baseUriForNamedStreamProperty, ODataVersion,DuplicatePropertyNamesChecker duplicatePropertyNamesChecker,ProjectedPropertiesAnnotation projectedProperties、Boolean writingResponse、ODataWriterBehavior 编剧(行为)

在 Microsoft.Data.OData.Json.ODataJsonWriterUtils.WriteProperties(JsonWriter jsonWriter、IODataUrlResolver、urlResolver、IEdmModel模型、, IEdmStructuredType owningType,IEnumerable`1属性,布尔值 allowNamedStreamProperty,Uri baseUriForNamedStreamProperty, ODataVersion,DuplicatePropertyNamesChecker duplicatePropertyNamesChecker,ProjectedPropertiesAnnotation projectedProperties、Boolean writingResponse、ODataWriterBehavior 编剧(行为)

位于Microsoft.Data.OData.Json.ODataJsonWriter.EndEntry(ODataEntry 条目)

在 Microsoft.Data.OData.ODataWriterCore.b_uu18()

在Microsoft.Data.OData.ODataWriterCore.InterceptException(操作 (行动)

在Microsoft.Data.OData.ODataWriterCore.WriteEndImplementation()上

在Microsoft.Data.OData.ODataWriterCore.WriteEnd()上

我们已经实现了一个变通方法(通过调用IEdmModel.Validate(…)显式地预初始化EDM),该方法最初似乎可以防止失败,但并不始终有效

是否有其他人看到此问题,如果是,是否有有效的解决方法/解决方案

谢谢


Eric

我假设当您同时从多个线程使用相同的IEdmModel时,会发生这种情况,对吗?(如果没有,请让我知道,因为这将是一个我们不知道的错误)

这是CTP中的一个已知错误,我们已经修复了它,并将在RTM版本中修复


我能想到的唯一解决办法是不要同时从多个线程使用同一模型(目前)。

这可能发生在并发请求上。即使我们在隔离服务器上的单个页面加载上看到它,页面加载也会产生并发AJAX请求。这个问题并不经常出现,因此可能很难说清楚——但我们可以尝试将元数据放在每个线程的生命周期管理器上,看看它是如何起作用的。