2012-06-19 4 views
0

Можно создать дубликат:
Ambiguous reference in WCF and client applicationМногоразовые классы assembies в WCF находятся под другим пространством имен в прокси

Я использую несколько классов из сборки «X» в моем WCF, тогда как мой клиентский код использует одну и ту же сборку для ссылки на другой набор классов. Это делает необходимым сохранить ссылку на сборку «X» в клиентском приложении.

, вызывающий конфликт как прокси-сервер, который я получаю на стороне клиента, удерживает классы от сборки «X» под другим пространством имен.

Пожалуйста, предложите любое решение.

ответ

0

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

+0

код работал хорошо. Я обновил метод в службе и обновил ссылку в коде потребителя, что привело к такой ошибке. – Ashish

+0

Как я уже сказал. Если вы используете сборку между сервисом и потребителем, не используйте прокси-сервер. Просто обратитесь к типам, которые вам нужны из сборки. –

+0

Я отредактировал предварительно сгенерированный прокси (reference.cs), чтобы разрешить конфликт. теперь он работает хорошо. – Ashish

0

@ А вы уже задали такой вопрос. Когда клиенту нужна ссылка с некоторыми классами, которые также генерируются прокси-сервером, то, очевидно, вы получаете неоднозначные ошибки.

Есть два способа избежать этой проблемы.

  1. Ссылка сервисные контракты/договоры данных сборки непосредственно в клиенте и вместо создания прокси-сервера с помощью svcutil.exe использования ChannelFactory как это было предложено @hugh.

  2. Если вы создаете прокси-сервер через VS, тогда вы настраиваете такое, чтобы сказать, что инструмент svcutil.exe не воссоздает классы, которые уже есть у клиента, когда я отвечал вам в этом thread.

+0

Я разместил этот вопрос, чтобы изменить мой вопрос простым способом. Я работаю над вашим подходом № 2, чтобы выяснить, как он мне помогает. Спасибо – Ashish

+0

@ Mark- Я следовал за подходом № 2. он отлично работал для меня. Но это не работает с приложением, над которым я работаю. Прокси-файл, созданный через svcutil, имеет несколько типов, которые конфликтуют с типами приложения (типы в общей сборке). и еще одна вещь, которую я наблюдал: - Операционные контракты изменены, например. - Список Метод() изменен на SomeType [] Метод() в прокси-классе. – Ashish

+0

"Список Метод() изменен на SomeType [] Метод()" этот, который вы можете управлять такими же, как и типы повторного использования в сборке, в диалоговом окне ссылки службы конфигурации. – VJAI