2012-03-09 49 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[]>(); 

它工作得很好。如果有人告诉我为什么这个工作,我会给他们回答这个问题的功劳。

相关问题