2009-03-09 4 views
0

I Интеграция веб-службы, которая возвращает несколько таблиц данных.Неожиданно возвращается тип возвращаемого типа Webservice

Когда я обновляю ссылку на webservice, иногда возвращаемый тип некоторых методов изменяется от DataTable к классу, который выглядит как массив из двух элементов (один для схемы, другой для datatable).

В браузере мы посмотрим на ссылочных DataTable выглядит следующим образом:

<?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> 

но problemmatic методы выглядят как:

<?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> 

обычно это problemmatic метод возвращает DataTable, и это не изменилось между веб ссылки обновления.

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

EDIT: Я решил проблему после обновления веб-ссылки на другом компьютере. Теперь метод возвращает DataTable. Но до сих пор не знаю, почему это происходит.

ответ

1

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

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

Смежные вопросы