Генерация wcf ServiceClients, проблема с ссылками - PullRequest
0 голосов
/ 21 марта 2011

Я пытаюсь сгенерировать классы ServiceClient.

У меня есть 2 проекта, API и WEB. Проект API содержит файлы классов ClassLibrary и DataContracts / Interface. У меня есть веб-сайт с файлами SVC. WEB ссылается на проект API.

Когда я генерирую классы Service Client, они генерируют в проекте API

Вот проблема, с которой я сталкиваюсь

Моя командная строка SvcUtil включает / Reference: [полный каталог API /bin/debug/API.dll]. Это тот же путь, что и выходные данные сборки из проекта API.

Когда я запускаю команду SvcUtil с этим / Reference, генерация завершается неудачно, и я вижу следующую сокращенную сводку сообщений.

Attempting to download metadata from 
'http://id.unittest/Services/EchoService.svc?wsdl' 
using WS-Metadata Exchange or DISCO.
Error: Cannot import wsdl:binding
Detail: Cannot locate operation IsSubscribed in Contract IEchoService.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']
/wsdl:binding[@name='WSHttpBinding_IEchoService']


Error: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent 
on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']
/wsdl:binding[@name='WSHttpBinding_IEchoService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']
/wsdl:service[@name='EchoService']/wsdl:port[@name='WSHttpBinding_IEchoService']


Generating files...
Warning: No code was generated.
If you were trying to generate a client, this could be because the metadata documents 
did not contain any valid contracts or services
or because all contracts/services were discovered to exist in /reference assemblies. 
Verify that you passed all the metadata documents to the tool.

Warning: If you would like to generate data contracts from schemas make sure 
to use the /dataContractOnly option.

Когда я удаляю ссылку /, генерация завершается успешно, но создается двойной набор классов сущностей, которые использовались в параметрах методов. Когда я пытаюсь построить свой проект API, я получаю сообщение об ошибке, что есть дублирующиеся имена классов и что я должен изменить их на частичные. Так что, не хочу и не нуждаюсь в этих дополнительных классах.

Надеюсь, я предоставил достаточно информации. Благодаря.

1 Ответ

2 голосов
/ 22 марта 2011

Решением было добавить следующие ключи в команду svcutil /serializer:DataContractSerializer /serializable

Ссылочный URL: MSDN forum

...