Тип возвращаемого веб-сервиса неожиданно изменился - PullRequest
0 голосов
/ 09 марта 2009

Я интегрирую веб-сервис, который возвращает несколько DataTables.

Когда я обновляю ссылку на веб-сервис, иногда возвращаемый тип некоторых методов изменяется с 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>

обычно этот проблемный метод возвращает таблицу данных, и он не изменяется между обновлениями веб-ссылок.

Кто-нибудь знает, почему это происходит?

РЕДАКТИРОВАТЬ: Я решил проблему после обновления веб-справки на другом компьютере. Метод теперь возвращает DataTable. Но до сих пор не знаю, почему это происходит.

1 Ответ

1 голос
/ 09 марта 2009

Прежде всего, возврат DataTable или DataSet не рекомендуется, так как эти типы специфичны для .NET.

Во-вторых, похоже, что DataSet, частью которого является DataTable, изменился, и его режим настроен на включение схемы. Вы можете попытаться явно создать DataTable как часть DataSet с SchemaSerializationMode, установленным в ExcludeSchema.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...