2012-03-09 53 views
3

我有一個程序調用一個休息服務並獲取一個字符串數組。當我嘗試讀取字符串數組時,我得到一個異常意外的文件結束。如果我有服務返回一個字符串,它只包含數組的第一項。我錯過了關於ReadAsDataContract<>()是否導致此異常?ReadAsDataContract <String[]> - 意外的文件結尾

var returnElement = response.Content.ReadAsDataContract<string[]>(); 

唯一的例外是XMLException:文件意外結束。

堆棧trace-

at System.Xml.EncodingStreamWrapper.ReadBOMEncoding(Boolean notOutOfBand) 
     at System.Xml.EncodingStreamWrapper..ctor(Stream stream, Encoding encoding) 
     at System.Xml.XmlUTF8TextReader.SetInput(Stream stream, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose) 
     at System.Runtime.Serialization.XmlObjectSerializer.ReadObject(Stream stream) 
     at System.Runtime.Serialization.DataContractContentExtensions.ReadAsDataContract[T](HttpContent content, DataContractSerializer serializer) 
     at System.Runtime.Serialization.DataContractContentExtensions.ReadAsDataContract[T](HttpContent content) 
     at RestConsumption.Program.GetDevices() in **********\documents\visual studio 2010\Projects\RestPractice\RestConsumption\Program.cs:line 55 
     at RestConsumption.Program.Main(String[] args) in *********\documents\visual studio 2010\Projects\RestPractice\RestConsumption\Program.cs:line 26 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
+0

我無法顯示我的完整代碼,但我可以告訴你我是如何使用ReadAsDataContract。 – SmashCode 2012-03-09 20:36:31

+0

響應json,xml是什麼格式? – 2012-03-09 20:37:53

+0

是否確定Web服務響應的大小不超過您在Web配置中設置的最大大小限制 – labroo 2012-03-09 20:38:56

回答

0

我在一個非常簡單的方法,我仍然不明白爲什麼它的工作解決了這一點。我壓根兒

string[] returnElement = response.Content.ReadAsDataContract<string[]>(); 

,而不是

var returnElement = response.Content.ReadAsDataContract<string[]>(); 

它工作得很好。如果有人告訴我爲什麼這個工作,我會給他們回答這個問題的功勞。

相關問題