Как преобразовать .NET WebService-Method-Result (Soap) в исходный тип данных? - PullRequest
1 голос
/ 06 мая 2010

У меня есть два «одинаковых» веб-сервиса (Soap) на двух разных серверах. Не спрашивай почему: -)

WebService-1 решает, обрабатывает ли он сам запрос или передает запрос в WebService-2. Если это так, ответ WebService-2 должен быть напрямую возвращен из WebService-1.

Тип ответа является сложным и самоопределяемым. С простыми типами данных, такими как int или string, проблем не будет.

Ответ WebService-2 представляет собой сериализованный объект (я думаю, что он называется «заглушками»), и поэтому ранее невозможно передать этот объект как ответ WebService-1, потому что тип объектов не матч.

Есть ли простой способ преобразовать сериализованный тип данных в его исходный тип без компоновки сложного конвертера?

1 Ответ

1 голос
/ 06 мая 2010

Да - как этого добиться, зависит от того, используете ли вы WCF или веб-службы старого стиля.

По сути, вы хотите, чтобы веб-справочные инструменты (svcutil.exe или wsdl.exe соответственно) идентифицировали, что результатом веб-службы на самом деле является «хорошо известный» тип объекта - во многом так же, как и для многих основных каркасные объекты.

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

Если вы используете веб-сервисы старого стиля, вам нужно изучить проект SchemaImporter - это позволит инструменту wsdl.exe распознавать ваши типы и правильно их использовать. Следует отметить, что это требуется только во время разработки - такие меры не требуются во время развертывания.

...