2013-04-04 5 views
0

У меня есть 2 WCF-сервиса (разные проекты), совместно использующие библиотеку классов с установленными MyExceptions.WCF FaultException конфликт имен

Обе службы используют:

[OperationContract] 
[FaultContract(typeof(MyException))] 
void op(); 

Когда я добавить обе ссылки в клиентском проекте я получаю:

Type namespace.MyException already defines a member called MyException with the same parameter types.

В основном классы с таким же именем, поэтому конструктор определен дважды. Любая идея о том, как изменить пространство имен Exception?

Пожалуйста, обратите внимание, что:

  • Я использую svcutils
  • вариант имен не работает.

Благодаря

+0

Я немного запутался здесь. Что значит «параметр пространства имен не работает»? Вы пытались использовать '[FaultContract (typeof (some.namespace.MyException))]'? (Я предполагаю, что две версии «MyException» имеют разные пространства имен ..?) – Kjartan

+0

Если я использую svcutil/namespace: *, MyNs http: // myUrl, я получаю Error: Can not import wsdl: binding Detail: произошла ошибка импортируя wsdl: portType, на который зависит wsdl: binding. –

ответ

1

Создайте прокси-сервер, используя svcutil /reference:SharedLibrary.dll. Таким образом, svcutil не будет генерировать классы, которые он находит в SharedLibrary.dll, поэтому клиент использует определения классов из сборки.

Не забудьте добавить ссылку на DLL в проект клиента, если вы еще этого не сделали.

+0

Спасибо, я дам ему попробовать и дам вам знать –

1

Помимо имен внушения, что можно сделать, чтобы изменить код прокси-порожденную SvcUtil и удалить дубликаты кода для класса MyException.

Этапы: 1. Создайте прокси-файл для Service1. 2. Создайте прокси-файл для Service2. 3. Добавьте прокси к клиенту. 4. Скомпилируйте и дайте ошибку для объявления MyException. 5. Измените один из прокси и удалите код класса MyException.

+0

Вот что я делаю сейчас. Спасибо за ответ. –

Смежные вопросы