Управление 2 веб-ссылками с зависимостью общего класса в проекте .NET - PullRequest
0 голосов
/ 23 февраля 2009

У меня есть проект веб-сервиса, в котором есть 2 файла asmx. Давайте назовем их internal.asmx & external.asmx На практике у них разные клиенты:

Внешне клиент будет вызывать externalWS.PersistOrder (Заказ-заказ), а внутренне мы обрабатываем заказ InternalWS ProcessOrder (Заказ-заказ). Поэтому класс Order является общей зависимостью для этих веб-сервисов.

Я пишу тестовое приложение, которое вызывает разные веб-методы на обоих этих веб-сервисах.

У меня проблемы, потому что веб-сервисы используют тот же класс. Чтобы использовать оба веб-метода, я добавляю две веб-ссылки в свой тестовый проект. Однако существует 2 копии зависимых классов с разными пространствами имен. В качестве краткосрочного исправления я редактирую классы, которые создает VS.

Должен быть лучший способ! Заранее спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 23 февраля 2009

Я не уверен, как (и если) вы можете изменить поведение мастера веб-ссылок VS.

Однако вы можете использовать wsdl.exe или svcutil.exe (в зависимости от того, хотите ли вы использовать в своих службах клиентский прокси-сервер в стиле System.Web или WCF) из командной строки и указать соответствующий параметр для общих типов.

Для wsdl.exe необходим параметр командной строки /sharetypes, хотя я не затрагивал его годами, поэтому не помню точных подробностей использования.

Для svcutil.exe необходим параметр командной строки / reference :. Это вам нужен общий класс в сборке, на которую вы можете ссылаться. Если единственное определение общего класса, к которому вы можете получить, находится в WSDL двух сервисов, вам может потребоваться использовать svcutil.exe для создания клиентского прокси, обрезать его, чтобы он содержал только общий класс, и построить из него эталонную сборку для фактических клиентских прокси для двух сервисов.

Недостаток этого подхода заключается в том, что если WSDL для одной из служб изменяется, вам необходимо снова запустить инструмент. Этого можно избежать, добавив в ваш проект настраиваемую задачу для цели BeforeBuild, которая всегда запускает инструмент для обеих служб.

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