“根级别的数据无效”使用Web服务时出错

时间:2012-02-06 09:27:55

标签: c# .net xml visual-studio web-services

我正在尝试在桌面.net应用程序中运行Web服务的方法,但在描述其XML结果时遇到问题。当我运行提到的方法编译器抛出此错误:

  

从网络收到的XML存在问题。   有关详细信息,请参阅内部异常。

Web服务托管在Apache服务器上,并使用PHP编写。 有一个客户端示例可以成功运行该方法。结果XML如下:

  <?xml version="1.0" encoding="UTF-8" ?> 
  <ServicesList>
  <Service>   
        <token>11838-78</token>    
        <coName>test</coName>    
  </Service>
  </ServicesList>

这是内部异常的一部分,其中说:“根级别的数据无效”

Message=The data at the root level is invalid. Line 1, position 1.
   Source=System.Runtime.Serialization
   LineNumber=0
   LinePosition=0
   StackTrace:
        at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3)
        at System.Xml.XmlUTF8TextReader.Read()
        at System.Xml.XmlBaseReader.IsStartElement()
        at System.Xml.XmlBaseReader.IsStartElement(XmlDictionaryString localName, XmlDictionaryString namespaceUri)
        at System.ServiceModel.Channels.ReceivedMessage.ReadStartEnvelope(XmlDictionaryReader reader)
        at System.ServiceModel.Channels.BufferedMessage..ctor(IBufferedMessageData messageData, RecycledMessageState recycledMessageState, Boolean[] understoodHeaders, Boolean understoodHeadersModified)
        at System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.ReadMessage(ArraySegment`1 buffer, BufferManager bufferManager, String contentType)
        at System.ServiceModel.Channels.MessageEncoder.ReadMessage(Stream stream, BufferManager bufferManager, Int32 maxBufferSize, String contentType)
        at System.ServiceModel.Channels.HttpInput.ReadChunkedBufferedMessage(Stream inputStream)
   InnerException: 

我花了很多时间在谷歌上找出问题所在。并且发现可能结果XML以BOM(字节顺序标记)开始,导致XMLReader抛出异常。

最后我在这里调用方法:

 mywebservice.wsobjectDLPortTypeClient mys = new mywebservice.wsobjectDLPortTypeClient();
        try
        {
            string res;
       //     mys.Open();              
            res = mys.srvReq(sourcecode, destinationcode, date, time, count);
         catch (Exception e)
        {
           //do something
        }

任何人都知道是什么导致这个问题以及我如何解决它?

0 个答案:

没有答案