Как создать сервис WCF с помощью SvcUtil.exe

Я использую SvcUtil.exe для создания файла IClassName.cs из файла wsdl, и это работает нормально. Моя проблема в том, что я не знаю, как сгенерировать файл ClassName.svc, используя аргументы команды для SvcUtil.exe.

После запуска SvcUtil.exe я хотел бы получить службу WCF, как при создании из Visual Studio Wizard, содержащей все классы *.svc, *.cs и интерфейс.

Спасибо, Скрч

5 ответов

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

После проверки состояния службы перейдите в командную строку Visual Studio и выполните следующую команду.

svcutil http://localhost/MyService/ClassName.svc /Language=c#
/t:Code /out:ClassNameProxy.cs /config:ClassNameProxy.config

В приведенной выше команде вы должны заменить сервисный URL (http://localhost/MyService/Service1.svc) с URL вашего сервиса. Поскольку мои службы разработаны на языке C#.net, я решил создать прокси на том же языке, используя флаг /Language= C#.

/ t: код будет указывать, что выход должен быть сгенерирован как код.

Параметры /out:ClassNameProxy.cs /config:ClassNameProxy.config сообщат служебной программе имена файлов, указанные в значениях этих параметров. После запуска команды инструмент сгенерирует выходной файл и файл конфигурации.

После этого просто включите файл ClassNameProxy.cs в ваш проект, откройте файл ClassNameProxy.config и скопируйте записи в ваш файл web.config. Вам также может потребоваться обновить файл ClassNameProxy.vb и обновить пространство имен в соответствии с тем, которое вы используете в своем проекте. После этого вы можете легко ссылаться на сервис в своем коде и вызывать операции.

Несколько примеров из инструмента, как его можно использовать

svcutil http://service/metadataEndpoint - Генерация клиентского кода из работающей службы или документов онлайн-метаданных.

svcutil *.wsdl *.xsd /language:C# - Генерация клиентского кода из локальных документов метаданных.

svcutil /dconly *.xsd /language:VB - Создание типов контрактов данных в VisualBasic из документов локальной схемы.

svcutil /t:metadata http://service/metadataEndpoint - Загрузить документы метаданных из запущенных служб

svcutil myAssembly.dll - Создание документов метаданных для договоров на обслуживание и связанных типов в сборке.

svcutil myServiceHost.exe /serviceName:myServiceName - Создание документов метаданных для службы и всех связанных с ней контрактов на обслуживание и типов данных в сборке.

svcutil myServiceHost.exe / dconly - создает документы метаданных для типов данных в сборке

svcutil /validate /serviceName:myServiceName myServiceHost.exe - Проверить сервис хостинга

svcutil /t:xmlserializer myContractLibrary.exe - Создание типов сериализации для типов XmlSerializer, используемых любыми контрактами на обслуживание в сборке.

Для тех, кто все еще ищет ответ и не может заставить работать версию 2012 года, Visual Studio 2015 и.Net 4.5 обновили инструмент svcutil.exe для использования переключателя /serviceContract, чтобы сгенерировать класс, который затем может быть реализован как служба.svc. Вам может потребоваться предоставить переключатели /syncOnly /wrapped /messageContract, а также в зависимости от исходного XSD

Svcutil.exe создает из службы прокси клиента службы на основе языка описания веб-служб (WSDL).

Откройте командную строку Visual Studio и выполните команду

svcutil http://localhost/MyService/Service.svc  /Language=c#  /t:Code  /out:C:\Service\ServiceProxy.cs /config:C:\Service\ServiceProxy.config

он генерирует два файла в папке C:\Service, файл прокси и файл конфигурации,

Подробнее здесь.

Я думаю, что.NET 4.5 Contract First Tool, интегрированный в Visual Studio 2012 в качестве задачи сборки, поможет вам сгенерировать нужные вам сервисные файлы.

Сервисные контракты часто необходимо создавать из существующих сервисов. В.NET Framework 4.5 классы контрактов данных могут создаваться автоматически из существующих сервисов с помощью инструмента контракта в первую очередь. Чтобы использовать инструмент контракта, файл определения схемы XML (XSD) должен быть загружен локально; инструмент не может импортировать удаленные контракты данных через HTTP.

http://msdn.microsoft.com/en-us/library/hh674270%28v=vs.110%29.aspx

Другие вопросы по тегам