我目前正在使用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中看到请求,但是它显示状态为很长时间未决,当它到达服务器时它会给出上述异常。但是同样工作得很好。
任何人都可以解释一下这种行为吗?如果想要我可以提供一些与之相关的其他代码。
答案 0 :(得分:2)
延迟可能只是由于asp.net在你最终失去空闲状态时必须重新启动,这需要一段时间。
至于错误,似乎是json数据协定序列化程序无法解析请求。我建议检查一些事情,如果它失败,请在此处发布详细信息,以便我们为您提供进一步的帮助。
请提供您的映射,实体和OR日志的副本(您可以通过将调试器附加到服务器进程获得),我们将尽力帮助您。