.Net实现的Web Service,返回一个XML字符串给客户端,方法签名如下:public string GetProxys( int mode )返回的XML字符串如下:
<Proxys>
  <xs:schema id="Proxys" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="Proxys" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="Proxy">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IP" type="xs:string" minOccurs="0" />
                <xs:element name="Port" type="xs:int" minOccurs="0" />
                <xs:element name="Type" type="xs:int" minOccurs="0" />
                <xs:element name="Status" type="xs:int" minOccurs="0" />
                <xs:element name="ResponseTime" type="xs:int" minOccurs="0" />
                <xs:element name="ValidateTime" type="xs:int" minOccurs="0" />
                <xs:element name="ConnectTime" type="xs:int" minOccurs="0" />
                <xs:element name="PostTime" type="xs:dateTime" minOccurs="0" />
                <xs:element name="LastValidateTime" type="xs:dateTime" minOccurs="0" />
                <xs:element name="Res" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <Proxy>
    <IP>10.0.0.2</IP>
    <Port>3128</Port>
    <Type>-1</Type>
    <Status>11</Status>
    <ResponseTime>0</ResponseTime>
    <ValidateTime>0</ValidateTime>
    <ConnectTime>0</ConnectTime>
    <PostTime>2010-07-04T11:51:56.89+08:00</PostTime>
  </Proxy>
</Proxys>
客户端使用 WSDL.exe 生成了这个Web Service的代理类,然后使用这个代理类的Web方法获取XML字符串:
string proxyXML = null;
WRSWebServices wrsWebServices = new WRSWebServices();
proxyXML = wrsWebServices.GetProxys( 1 );
但是在执行到【proxyXML = wrsWebServices.GetProxys( 1 );】时总是要抛出一个 InvalidOperationException 异常,异常信息为【XML 文档(36, -1883)中有错误】,
但是,如果我返回的XML字符串不包含架构信息,那客户端的代码就能正常运行,
这是为什么呢?

解决方案 »

  1.   

    To 2楼:1、我先从DB中选出结果集,并以DataTable对象返回;
    2、然后使用 DataSet.WriteXml() 方法产生了这个带架构信息的XML字符串:                MemoryStream ms = new MemoryStream();
                    ds.WriteXml( ms, XmlWriteMode.WriteSchema );
                    resultXML = Encoding.GetEncoding( 936 ).GetString( ms.GetBuffer() );
      

  2.   

    我顶!
    中午朋友们吃完饭可能要上下CSDN,希望你们能看到我的帖子,顺便指点一下!
      

  3.   

    尝试在webservice使用XmlDocument.OuterXml返回xml