OData库Edm.Internal.Cache空引用异常
我们使用的是2011年10月微软OData库的CTP。一段时间以来,包括以前的版本,我们一直在库内部深处遇到模型序列化时间歇性的空引用异常 System.NullReferenceException 在Microsoft.Data.Edm.Internal.CacheOData库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
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请求。这个问题并不经常出现,因此可能很难说清楚——但我们可以尝试将元数据放在每个线程的生命周期管理器上,看看它是如何起作用的。