【问题标题】:OData Library Edm.Internal.Cache null reference exceptionOData 库 Edm.Internal.Cache 空引用异常
【发布时间】:2012-03-06 18:56:31
【问题描述】:

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

System.NullReferenceException

在 Microsoft.Data.Edm.Internal.Cache2.GetValue(TContainer container, Func2 计算,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,Uri baseUriForNamedStreamProperty, ODataVersion 版本,DuplicatePropertyNamesChecker duplicatePropertyNamesChecker、ProjectedPropertiesAnnotation projectionProperties、布尔写入响应、ODataWriterBehavior 作家行为)

在 Microsoft.Data.OData.Json.ODataJsonWriterUtils.WriteProperties(JsonWriter jsonWriter, IODataUrlResolver urlResolver, IEdmModel 模型, IEdmStructuredType owningType,IEnumerable`1 属性,布尔值 allowNamedStreamProperty,Uri baseUriForNamedStreamProperty, ODataVersion 版本,DuplicatePropertyNamesChecker duplicatePropertyNamesChecker、ProjectedPropertiesAnnotation projectionProperties、布尔写入响应、ODataWriterBehavior 作家行为)

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

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

在 Microsoft.Data.OData.ODataWriterCore.InterceptException(Action 行动)

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

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

我们实施了一种解决方法(通过调用 IEdmModel.Validate(...) 显式预初始化 EDM),最初似乎可以防止失败,但这并不是始终有效。

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

谢谢,

埃里克

【问题讨论】:

    标签: odata ado.net-entity-data-model


    【解决方案1】:

    我认为当您同时从多个线程使用相同的 IEdmModel 时,您会遇到这种情况,对吧? (如果不是,请告诉我,因为那将是我们不知道的错误)。

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

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

    【讨论】:

    • 这可能发生在并发请求上。即使我们在隔离服务器上的单个页面加载中看到它,页面加载也会产生并发 AJAX 请求。该问题不会经常重现,因此可能很难确定 - 但我们可以尝试将元数据放在每个线程生命周期管理器上,看看它是如何成立的。
    猜你喜欢
    • 2023-03-15
    • 2017-08-19
    • 2012-04-03
    • 2011-05-16
    • 2013-09-21
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多