Как создать сервис 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