我集成了一个返回多个DataTable的Web服务。
当我更新webservice引用时,有时某些方法的返回类型会从DataTable更改为类似于2个项目的数组(一个用于数据表的其他模式)。
在浏览器中,我们看一下参考数据表:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<NormalMethodResponse xmlns="http://abc.com">
<NormalMethodResult>
<xsd:schema>schema</xsd:schema>xml</NormalMethodResult>
</NormalMethodResponse>
</soap:Body>
</soap:Envelope>
但问题方法如下:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ProblemmaticMethodResponse xmlns="http://abs.com">
<ProblemmaticMethodResult>xmlxml</ProblemmaticMethodResult>
</ProblemmaticMethodResponse>
</soap:Body>
</soap:Envelope>
通常这个有问题的方法会返回一个数据表,并且在Web引用更新之间不会更改。
任何人都知道为什么会这样?
编辑:我在另一台机器上更新了Web Reference后解决了这个问题。方法现在返回DataTable。但仍然不知道为什么会这样。
答案 0 :(得分:1)
首先,返回DataTable或DataSet不是最佳做法,因为这些类型特定于.NET。
其次,听起来像DataTable所属的DataSet已更改为将其模式设置为包含架构。您可以尝试将DataTable显式创建为DataSet的一部分,并将SchemaSerializationMode设置为ExcludeSchema。