Webservice返回类型意外更改

时间:2009-03-09 09:35:40

标签: .net asp.net web-services

我集成了一个返回多个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。但仍然不知道为什么会这样。

1 个答案:

答案 0 :(得分:1)

首先,返回DataTable或DataSet不是最佳做法,因为这些类型特定于.NET。

其次,听起来像DataTable所属的DataSet已更改为将其模式设置为包含架构。您可以尝试将DataTable显式创建为DataSet的一部分,并将SchemaSerializationMode设置为ExcludeSchema。