ReadAsDataContract- Неожиданный конец файла - PullRequest
3 голосов
/ 10 марта 2012

У меня есть программа, которая вызывает службу отдыха и возвращает массив строк.Когда я пытаюсь прочитать массив строк, я получаю исключение Неожиданный конец файла.Если у меня есть служба, возвращает строку, содержащую только первый элемент массива, он работает.Что мне не хватает в ReadAsDataContract<>(), который вызывает это исключение?

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

Исключением является исключение XMLException: неожиданный конец файла.

Трассировка стека -

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()

1 Ответ

0 голосов
/ 14 марта 2012

Я решил это очень просто, так что до сих пор не понимаю, почему это сработало. Я просто сделал

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

вместо

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

и все работало нормально. Если кто-нибудь скажет мне, почему это сработало, я воздаю ему должное за ответ на этот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...