Почему значение, возвращаемое веб-сервисом, не было xml - PullRequest
2 голосов
/ 16 мая 2011
webservice.PService pService = new Project.webservice.PService();
var v3 = passportService.HelloWorld();
Response.Write(v3);

Я отладил его и обнаружил, что v3 является строкой.Зачем?Разве webservcie не должен всегда возвращать xml?Веб-служба была:

[WebMethod]
public string HelloWorld()
{
    return "Hello World";
}

Редактировать: Что, если я хочу, чтобы объект или список объектов были возвращены веб-службой?

Ответы [ 2 ]

1 голос
/ 16 мая 2011

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

1 голос
/ 16 мая 2011

Я полагаю, вы, возможно, захотите начать с Microsoft .

. Затем взгляните на возвращаемые объекты .

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

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

Возврат коллекций объектов из вашего WebMethod по сути одинаков, хотя стоит отметить, что List<T> преобразуется в массив по проводу .

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