OData Library Edm.Internal.Cache исключение нулевой ссылки - PullRequest
0 голосов
/ 06 марта 2012

Мы используем CTP-версию библиотеки Microsoft OData за октябрь 2011 года.В течение некоторого времени, включая предыдущие версии, мы сталкивались с периодически возникающим исключением нулевой ссылки при сериализации модели из глубины внутренних областей библиотеки.

System.NullReferenceException

в Microsoft.Data.Edm.Internal.Cache 2.GetValue(TContainer container, Func 2 вычислить, Func`2 onCycle)

в Microsoft.Data.Edm.Csdl.Internal.CsdlSemantics.CsdlSemanticsStructuredTypeDefinition.FindProperty (String name) * * 100 *по адресу Microsoft.Data.OData.ValidationUtils.ValidatePropertyDefined (String propertyName, IEdmStructuredType owningStructuredType)

по адресу Microsoft.Data.OData.Json.ODataJsonWriterUtils.WriteProperty (свойство JsonWriter, приобретенный мнойполи, Boolean allowNamedStreamProperty, Uri baseUriForNamedStreamProperty, версия ODataVersion, DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, ProjectedPropertiesAnnotation projectedProperties, логическое написаниеResponse, ODataWriterBehavior writerBehavior)

в Microsoft.Data.OData.Json.ODataJsonWriterUtils.WriteProperties (JsonWriter jsonWriter, IODataUrlResolver urlResolver, модель IEdmProrytyOntyOntyOntyOntyOnDeaderSuper_RuTeReOntyOnTeReOnTyReTeReNeRuTeReNeTyReTeReNeTyRuTeReNeTyReTeReNeTyReTeRuTeReNTeRuTeRuTeReNTeReTeRuT))).DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, ProjectedPropertiesAnnotation projectedProperties, Boolean writingResponse, ODataWriterBehavior writerBehavior)

в Майкрософт.Data.OData.Json.ODataJsonWrit.Eat.()

в Microsoft.Data.OData.ODataWriterCore.InterceptException (действие Action)

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

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

Мы реализовали обходной путь (явная предварительная инициализация EDM с помощью вызова IEdmModel.Validate(...)), которая первоначально, казалось, предотвращала сбой, но это не всегда эффективно.

Кто-нибудь еще видит эту проблему, и если да, есть ли эффективный обходной путь / решение?

Спасибо,

Эрик

1 Ответ

1 голос
/ 06 марта 2012

Я предполагаю, что это происходит для вас, когда вы используете один и тот же IEdmModel из нескольких потоков одновременно, верно?(если нет, пожалуйста, дайте мне знать, поскольку это будет ошибка, о которой мы не знаем).

Это известная ошибка в CTP, которую мы уже исправили и которая будет исправлена ​​в версии RTM.

Единственный обходной путь, о котором я могу подумать, - это не использовать одну и ту же модель из нескольких потоков одновременно (пока).

...