2012-03-06 83 views
0

我們正在使用Microsoft OData庫的2011年10月CTP。一段時間以來,包括以前的版本,我們一直在從庫的內部深入模型序列化時遇到間歇性的空引用異常。OData庫Edm.Internal.Cache空引用異常

System.NullReferenceException

在Microsoft.Data.Edm.Internal.Cache 2.GetValue(TContainer container, Func 2計算,Func`2 onCycle)

在 Microsoft.Data.Edm.Csdl.Internal.CsdlSemantics。 CsdlSemanticsStructuredTypeDefinition.FindProperty(字符串 名)

在Microsoft.Data.OData.ValidationUtils.ValidatePropertyDefined(字符串 propertyName的,IEdmStructuredType owningStructuredType)

在 Microsoft.Data.OData.Json.ODataJsonWriterUtils.WriteProperty(JsonWriter jsonWriter,IODataUrlResolver urlResolver,IEdmModel模型, ODataProperty財產,IEdmStructuredType owningType,布爾 allowNamedStreamProperty,烏里baseUriForNamedStreamProperty, ODataVersion版本,DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, ProjectedPropertiesAnnotation projectedProperties,布爾writingResponse,ODataWriterBehavior writerBehavior)

在 Microsoft.D ata.OData.Json.ODataJsonWriterUtils.WriteProperties(JsonWriter jsonWriter,IODataUrlResolver urlResolver,IEdmModel模型, IEdmStructuredType owningType,IEnumerable`1屬性,布爾 allowNamedStreamProperty,烏里baseUriForNamedStreamProperty, ODataVersion版本,DuplicatePropertyNamesChecker duplicatePropertyNamesChecker,ProjectedPropertiesAnnotation projectedProperties,布爾writingResponse ,ODataWriterBehavior writerBehavior)

在Microsoft.Data.OData.Json.ODataJsonWriter.EndEntry(ODataEntry 條目)

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

在Microsoft.Data.OData.ODataWriterCore.InterceptException(動作 動作)

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

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

我們(通過調用IEdmModel.Validate(...)的EDM明確預初始化)實施的變通方法,起初似乎防止失敗,但這不是一貫有效的。

是否有其他人看到這個問題,如果有的話是否有一個有效的解決方法/解決方案?

感謝,

埃裏克

回答

1

我認爲這種情況發生了,當你在同一時間從多個線程使用相同的IEdmModel,對不對? (如果不是,請讓我知道,因爲這將是一個我們不知道的錯誤)。

這是我們已經修復的CTP中的一個已知錯誤,將在RTM版本中修復。

我能想到的唯一解決方法是不同時使用多個線程中的同一模型(現在)。

+0

這可能是發生在併發請求上。儘管我們在孤立服務器上的單個頁面上看到它,但頁面加載會發出併發的AJAX請求。這個問題並不經常被複制,因此可能很難說 - 但我們可以嘗試將元數據放在每個線程生命週期管理器上,並瞭解它如何保持。 – evoskuil 2012-03-07 00:28:27