2012-03-06 2 views
0

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

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 имя)

в Microsoft.Data.OData.ValidationUtils.ValidatePropertyDefined (String ИмениСвойства, IEdmStructuredType owningStructuredType)

на Microsoft.Data.OData.Json.ODataJsonWriterUtils.WriteProperty (JsonWriter jsonWriter, IODataUrlResolver urlResolver, IEdmModel модель, ODataProperty свойство, IEdmStructuredType owningType, Boolean allowNamedStreamProperty, Uri 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 (Action действия)

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

на Microsoft.Data.OData.ODataWriterCore.WriteEnd()

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

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

Спасибо,

Eric

ответ

1

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

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

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

+0

Возможно, что это происходит при одновременных запросах. Несмотря на то, что мы видим это при загрузке одной страницы на изолированном сервере, загрузка страницы делает одновременные запросы AJAX. Проблема не часто воспроизводится, поэтому может быть сложно сказать наверняка, но мы можем попытаться разместить метаданные в менеджере жизненного цикла на протяжении каждого потока и посмотреть, как это происходит. – evoskuil

Смежные вопросы