Использование веб-службы, написанной на VS2008 - PullRequest
2 голосов
/ 19 января 2009

У меня есть веб-сервис, написанный на C # в Visual Studio 2008 (я также написал его в VS 2005). Я могу написать тестовое приложение Windows Form, чтобы использовать сервис без проблем.

Проблема, с которой я столкнулся - это использование C # / VS2003 (или php, которая является моей настоящей проблемой). Это просто дает мне ошибку:

"Невозможно неявно преобразовать тип 'TestIntel.WebIntel.GetSitesResponseGetSitesResult' в 'System.Data.DataTable"

Web-метод возвращает DataTable; как я уже сказал, это прекрасно работает, если потребитель был построен в VS2005 / 2008. Что дает?

1 Ответ

3 голосов
/ 19 января 2009

Чтобы использовать DataTable, вызывающим точкам (php и .net 1.1) необходимо знать, как десериализовать его в пригодный для использования объект.

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

Очевидно, что PHP не может этого сделать. И причина ошибки .net 1.1 в том, что объект DataTable несколько изменился между 1.1 и 2.0. Фактически, Microsoft утверждает, что объект с данными .Net 1.1 BY BYIGN не должен сериализоваться через веб-сервис. ([http://support.microsoft.com/kb/306134][1])

Если вы ищете реальный межъязыковой способ сделать это, вам нужно сериализовать ваш ответ в стандартный объект XML. Который может быть правильно проанализирован любым языком. Это немного больше работы, но в результате получается полезный сервис.

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