Как вернуть или привести тот же тип из веб-сервисов - PullRequest
2 голосов
/ 07 февраля 2012

Я создал веб-сервис в asp.net (ASMX) для целей кэширования. Веб-сайт, который использует этот WS, запрашивает и получает объект общего типа (то есть и веб-сайт, и веб-сервисы используют одну и ту же DLL-библиотеку, которая включает этот тип объекта).

но происходит следующее: веб-сайт получает ответ от веб-сервисов, а тип переносится в пространство имен WS.

например. Если у меня есть в разделяемой DLL класс Core.Person веб-сервис возвращает Core.Person. веб-сайт (даже если он знает core.person) получит WebServiceNS.Person

Это не позволит мне разыграть его.

как мне по-прежнему использовать то же оригинальное пространство имен DLL при получении этих объектов из WS?

спасибо

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

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

Если вам нужна помощь, оставьте комментарий.

Надеюсь, это работает для вас.

1 голос
/ 07 февраля 2012

Вы не должны использовать сервисы ASMX для новых разработок. Это устаревшая технология.

Кроме того, у него нет возможности делать то, что вы хотите. WCF, с другой стороны, может сделать это тривиально.

0 голосов
/ 07 февраля 2012

На самом деле, когда мы добавляем ссылку на веб-сервис, VS генерирует заглушку, создающую классы для всех объектов, необходимых для WS. (Они основаны на файле WSDL, размещенном на веб-сервере). Все наше общение с веб-сервисом осуществляется с помощью этой заглушки. Я думаю, вам придется написать свой собственный конструктор копирования для этого.

...