ASP.net повторно использовать типы между ссылками на службы
У меня есть две сервисные ссылки, которые я импортирую в свой проект asp.net, импортируя WSDL для каждой. Первая ссылка - это ссылка по умолчанию из моего веб-сервиса (Acumatica), а вторая - пользовательская служба конечных точек, которую я создал в исходном веб-сервисе.
Проблема заключается в том, что оба они используют одни и те же "базовые типы" в своих классах объектов, поэтому, когда я включаю оба пространства имен для использования объектов из них обоих в своем коде, я получаю сообщение об ошибке, говоря о неоднозначных ссылках между базовыми типами в два пространства имен. Имеет смысл. Но как я могу настроить это так, чтобы.net знал, что нужно повторно использовать базовые типы между двумя пространствами имен, поскольку они абсолютно одинаковы?
Чтобы показать, о чем я говорю:
Вы можете видеть, что есть типы, которые абсолютно одинаковы между ссылками. Могу ли я настроить эти ссылки для повторного использования этих типов между ними, чтобы избавиться от моих неоднозначных ошибок ссылок?
2 ответа
К сожалению, нет способа достичь того, что вы хотите.
Дело в том, что используемые базовые классы не одинаковы (они имеют разные атрибуты, что приводит к разной (де) сериализации XML). Чтобы еще больше оскорбить травму, при исследовании этой проблемы мы обнаружили, что клиентская утилита WCF, которую вы используете для генерации клиентского кода , не поддерживает повторное использование при использовании XMLSerializer, поэтому даже если Acumatica сделала базовые классы абсолютно одинаковыми, по-прежнему не будет никакого повторного использования на клиенте.
Но зачем вам разные конечные точки одновременно? Если ваша собственная конечная точка только добавляет функциональность в Acumatica Default
почему бы не рассмотреть вопрос о продлении Default
? Таким образом, вам понадобится только одна конечная точка в вашем коде.
Создайте библиотеку классов (например, "MySharedContracts"), в которую вы поместите все типы, которые вы хотите использовать в веб-сервисах. Вы можете ссылаться на ту же библиотеку классов в своих проектах веб-служб и в проекте ASP.net, который использует веб-службы.
Затем в проекте ASP.net при импорте определения WDSL нажмите "Дополнительно", чтобы открыть диалоговое окно "Настройки ссылок на службы". Здесь включите "Повторное использование типов в ссылочных сборках". Затем вы можете либо разрешить VS самостоятельно искать подходящие типы, выбрав "Повторное использование типов во всех ссылочных сборках", либо альтернативно указать набор сборок, для которых вы хотите использовать типы для веб-служб.