.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字符串不包含架构信息,那客户端的代码就能正常运行,
这是为什么呢?
<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字符串不包含架构信息,那客户端的代码就能正常运行,
这是为什么呢?
2、然后使用 DataSet.WriteXml() 方法产生了这个带架构信息的XML字符串: MemoryStream ms = new MemoryStream();
ds.WriteXml( ms, XmlWriteMode.WriteSchema );
resultXML = Encoding.GetEncoding( 936 ).GetString( ms.GetBuffer() );
中午朋友们吃完饭可能要上下CSDN,希望你们能看到我的帖子,顺便指点一下!