2012-02-13 64 views
2

我目前使用openRasta來構建Rest Api.I在發送Ajax請求時觀察到奇怪的行爲。有時候請求會成功,有時會失敗,並且會給出以下異常。Openrasta數據序列化問題

{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多分鐘,我可以看到螢火蟲的請求,但它顯示爲長時間暫停狀態,當它擊中服務器它給以上例外。但是有時候工作得很好。

有人可以解釋我這種行爲嗎?如果我想提供一些額外的代碼相關的。

回答

2

延遲可能只是由於asp.net不得不重啓,當你最終離開閒置,這需要一段時間。

至於錯誤,它似乎是json數據協定序列化程序不能解析請求。我建議檢查一些事情,如果在這裏沒有提供詳細信息,我們可以幫助你進一步。

  1. 身體確實是正確的時間誤差triggererd(與小提琴家)
  2. 那你不必會阻止從到達正確的ASP請求一些特定的asp.net-問題。網絡流水線,如基於cookies的認證或會話管理
  3. 該請求不被任何http模塊攔截(反僞造令牌等)。

請提供您的映射,實體和OR日誌的副本(您可以通過將調試器附加到服務器進程中),我們會盡力爲您提供幫助。

+0

當我通過visual studio運行並調試它時,我能夠重現此問題。但是,當我使用Rest Client發送相同的請求時,它運行良好。 – prashant 2012-02-20 13:30:20