Проблема сериализации данных Openrasta - PullRequest
2 голосов
/ 13 февраля 2012

В настоящее время я использую openRasta для сборки Rest Api. Я наблюдаю странное поведение при отправке Ajax-запросов. Иногда запрос бывает успешным, иногда происходит сбой, и он выдает следующее исключение.

{Exception:
System.Runtime.Serialization.SerializationException: Expecting element 'root' from namespace ''.. Encountered 'None'  with name '', namespace ''. 
   at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName)
   at System.Runtime.Serialization.XmlObjectSerializer.InternalReadObject(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(XmlDictionaryReader reader)
   at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(Stream stream)
   at OpenRasta.Codecs.JsonDataContractCodec.ReadFrom(IHttpEntity request, IType destinationType, String paramName)
   at OpenRasta.OperationModel.Hydrators.RequestEntityReaderHydrator.TryReadPayloadAsObject(IHttpEntity requestEntity, IMediaTypeReader reader, IOperation operation)}

Одна вещь, которую я заметилв том, что когда браузер некоторое время простаивает, скажем, более 10 минут, я вижу запрос в firebug, но он показывает состояние ожидания в течение долгого времени, а когда он попадает на сервер, он выдает исключение. Но иногда он работает нормально.

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

1 Ответ

2 голосов
/ 14 февраля 2012

Задержка может быть вызвана просто перезапуском asp.net, когда вы, наконец, выйдете из простоя, что занимает некоторое время.

Что касается ошибки, похоже, что контракт данных jsonСериализатор не может проанализировать запрос.Я бы посоветовал проверить несколько вещей, и если это не удастся, опишите здесь детали, чтобы мы могли помочь вам в дальнейшем.

  1. Что тело действительно правильно в момент возникновения ошибки (сfiddler)
  2. что у вас нет некоторых специфичных для asp.net проблем, которые могут помешать правильному поступлению запроса в конвейер asp.net, таких как проверка подлинности на основе файлов cookie или управление сеансами
  3. Чтобы запрос не был перехвачен никаким модулем http (токены защиты от подделки и т. Д.).

Пожалуйста, предоставьте свои сопоставления, сущности и копию журнала OR (который можно получить, подключив отладчик ксервер), и мы постараемся помочь вам в дальнейшем.

...