Инструмент языка описания веб-служб (Wsdl.exe)
Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.
Инструмент языка описания веб-служб создает код для XML-веб-служб и их клиентов из файлов контрактов WSDL, схем XSD и документов обнаружения DISCOMAP.
Примечание |
---|
Программа WSDL.exe может создавать классы с именами вида «@string». Это допустимые имена типов, в которых префикс @ используется, чтобы разрешить использование имен, содержащих ключевые слова C#. |
wsdl [options] {URL | path}
Замечания
Аргумент | Описание |
---|---|
URL |
URL-адрес файла контракта WSDL, файла схемы XSD или документа обнаружения DISCO. Обратите внимание, что нельзя указать URL-адрес документа обнаружения .discomap. |
Path |
Путь к локальному файлу контракта WSDL, файлу схемы XSD или документу обнаружения DISCO или DISCOMAP.
Примечание
Wsdl.exe не извлекает включения и импорты из сети, если задан локальный файл. Чтобы разрешить программе Wsdl.exe извлекать сетевые ресурсы при обработке локального файла, передайте URL-адрес в локальный файл. Например, следующий файл извлекает необходимые ресурсы из сети:
wsdl File:///E:/Customers/WSDLS/Accounts.wsdl /out:proxy.cs
|
Параметр | Описание |
---|---|
/appsettingurlkey:ключ или /urlkey:ключ |
Указывает ключ конфигурации, используемый для чтения значения по умолчанию для свойства URL при создании кода. При использовании параметра /parameters это значение является элементом <appSettingUrlKey> и содержит строку. |
/appsettingbaseurl:базовый_URL-адрес или /baseurl:базовый_URL-адрес |
Указывает базовый URL, используемый при вычислении фрагмента URL-адреса. Программа вычисляет фрагмент URL-адреса путем преобразования относительного URL-адреса, заданного с помощью аргумента базовый URL-адрес, в URL-адрес в документе WSDL. Вместе с этим параметром необходимо задать параметр /appsettingurlkey. При использовании параметра /parameters это значение является элементом <appSettingBaseUrl> и содержит строку. |
/d[omain]:домен |
Задает имя домена, используемого при подключении к серверу, требующему проверку подлинности. При использовании параметра /parameters это значение является элементом <domain> и содержит строку. |
/l[anguage]:язык |
Указывает язык, используемый для создания прокси-класса. В качестве аргумента, задающего язык, можно указать CS (C#, используется по умолчанию), VB (Visual Basic), JS (JScript) или VJS (Visual J#). Также можно указать полное имя класса, реализующего класс System.CodeDom.Compiler.CodeDomProvider. При использовании параметра /parameters это значение является элементом <language> и содержит строку. |
/n[amespace]:пространство_имен |
Задает пространство имен для созданного прокси или шаблона. Пространство имен по умолчанию — глобальное пространство имен. При использовании параметра /parameters это значение является элементом <namespace> и содержит строку. Этот элемент должен содержаться в файле параметров. |
/nologo |
Отключает отображение эмблемы Майкрософт при запуске. При использовании параметра /parameters это значение является элементом <nologo> и содержит либо true, либо false. |
/order |
Генерирует явные идентификаторы порядка для примитивных членов. |
/o[ut]:имя_файла или имя_каталога |
Задает путь к файлу (или каталогу), в котором сохраняется созданный код прокси. Также можно указать каталог, в котором требуется создать этот файл. По умолчанию в качестве имени файла программа использует имя XML-веб-службы. Программа сохраняет сгенерированные наборы данных в различных файлах. При использовании параметра /parameters это значение является элементом <out> и содержит строку. |
/parameters |
Считывает параметры командной строки из указанного файла XML. Этот параметр используется, когда требуется передать программе Wsdl.exe большое количество параметров одновременно. Краткая форма: /par:. Элементы параметров содержатся в элементе <wsdlParameters xmlns="https://microsoft.com/webReference/">. Подробные сведения см. в разделе «Заметки». |
/parsableerrors |
Отображает ошибки в формате, аналогичном используемому компиляторами языков в отчетах об ошибках. При использовании параметра /parameters это значение является элементом <parsableerrors> и имеет значение либо true, либо false. |
/p[assword]:пароль |
Задает пароль, используемый при подключении к серверу, требующему проверку подлинности. При использовании параметра /parameters это значение является элементом <password> и содержит строку. |
/protocol:протокол |
Указывает реализуемый протокол. Можно указать протокол SOAP (по умолчанию), HttpGet, HttpPost или пользовательский протокол, указанный в файле конфигурации. При использовании параметра /parameters это значение является элементом <protocol> и содержит строку. |
/proxy:URL-адрес |
Задает URL-адрес прокси-сервера, используемого для HTTP-запросов. По умолчанию используются системные настройки прокси-сервера. При использовании параметра /parameters это значение является элементом <proxy> и содержит строку. |
/proxydomain:домен или /pd:домен |
Задает домен, используемый при подключении к прокси-серверу, требующему проверку подлинности. При использовании параметра /parameters это значение является элементом <proxydomain> и содержит строку. |
/proxypassword:пароль или /pp:пароль |
Задает пароль, используемый при подключении к прокси-серверу, требующему проверку подлинности. При использовании параметра /parameters это значение является элементом <proxypassword> и содержит строку. |
/proxyusername:имя_пользователя или /pu:имя_пользователя |
Задает имя пользователя, используемое при подключении к прокси-серверу, требующему проверку подлинности. При использовании параметра /parameters это значение является элементом <proxyusername> и содержит строку. |
/server |
Генерирует абстрактный класс для XML-веб-службы на основе контрактов. По умолчанию создаются клиентские прокси-классы. При использовании параметра /parameters это значение является элементом <style>, содержащим значение server. |
/serverInterface |
Создает интерфейсы для реализации сервера веб-службы ASP.NET. Для каждой привязки в документе (или документах) WSDL генерируется интерфейс. Документ WSDL сам по себе реализует контракт WSDL (методы классов, реализующих интерфейс, не должны иметь ни атрибутов веб-служб, ни атрибутов сериализации, изменяющих контракт WSDL). Краткая форма: /si. При использовании параметра /parameters это значение является элементом <style>, содержащим значение serverInterface. |
/sharetypes |
Включает совместное использование типов. Эта функция создает файл кода с одним определением типа для идентичных типов, которое используется разными службами (пространство имен, имя и сетевая подпись должны быть идентичными). Укажите службы с помощью URL-адресов в параметрах командной строки (начинающихся с "http://") или создайте документ DISCOMAP для локальных файлов. При использовании параметра /parameters это значение является элементом <sharetypes> и имеет значение либо true, либо false. |
/u[sername]:имя_пользователя |
Задает имя пользователя, используемое при подключении к серверу, требующему проверку подлинности. При использовании параметра /parameters это значение является элементом <username> и содержит строку. |
/? |
Отображает синтаксис команд и параметров инструмента. |
Файл WSDL — это документ XML, составленный согласно XML-грамматике, называемой языком описания веб-служб (WSDL). Этот файл определяет поведение XML-веб-службы и указывает клиентам правила взаимодействия с ней.
Документы обнаружения для XML-веб-службы можно получить с помощью программы Инструмент для обнаружения веб-служб (Disco.exe). Файлы DISCOMAP, DISCO, WSDL и XSD, созданные этой программой, можно использовать в качестве входных данных для программы Wsdl.exe.
При создании прокси-класса с помощью программы Wsdl.exe создается один исходный файл на указанном языке программирования. При генерировании исходного кода для прокси-класса программа определяет, какой тип лучше использовать для объектов, указанных в описании службы. В некоторых случаях при приведении объектов к типу используется "принцип наименьшего общего знаменателя". В результате созданный тип в прокси-классе может отличаться от требуемого или ожидаемого разработчиком. Например, когда программа WSDL.exe встречает в описании службы тип ArrayList, в генерируемом прокси-классе создается массив Object Array. Чтобы обеспечить правильное приведение типов объектов, откройте файл, содержащий сгенерированный прокси-класс, и измените все неправильные типы объектов на ожидаемые типы.
- Параметр /parameters указывает файл, содержащий элементы, соответствующие многим параметрам командной строки. Некоторые параметры командной строки доступны только в формате файла /parameters.
Формат файла XML, поддерживаемый параметром /parameters, — это набор элементов, заключенных во внешний элемент <wsdlParameters xmlns="https://microsoft.com/webReference/">. Если указаны значения параметров командной строки и используется файл /parameters, содержащий другие параметры или значения, то используются значения, указанные в командной строке. Элемент <wsdlParameters xmlns="https://microsoft.com/webReference/"> должен содержать следующие элементы: <nologo>, <parsableerrors> и <sharetypes>.
Некоторые параметры передаются в виде дочерних элементов элемента <webReferenceOptions>, который должен содержать элемент <verbose>. Элемент <webReferenceOptions> также имеет следующие дочерние элементы:
<style>. Содержит значение client, server или serverInterface.
<schemaImporterExtension>. Содержит произвольное количество элементов <type>.
<codeGenerationOptions>. Принимает набор из следующих строк, разделяемых пробелами.
"properties"
"newAsync"
"oldAsync"
"order"
"enableDataBinding"
Примеры использования параметра /parameters см. в разделе "Примеры".
Примеры
Следующая команда создает клиентский прокси-класс на языке C# для XML-веб-службы.
wsdl http://hostServer/WebserviceRoot/WebServiceName.asmx?WSDL
Следующая команда создает клиентский прокси-класс на языке C# для XML-веб-службы, находящейся по указанному URL-адресу. Программа сохраняет клиентский прокси-класс в файле myProxyClass.cs
.
wsdl /out:myProxyClass.cs http://hostServer/WebserviceRoot/WebServiceName.asmx?WSDL
Следующая команда создает клиентский прокси-класс на языке Microsoft Visual Basic для XML-веб-службы, находящейся по указанному URL-адресу. Программа сохраняет клиентский прокси-класс в файле myProxyClass.vb
.
wsdl /language:VB /out:myProxyClass.vb http://hostServer/WebserviceRoot/WebServiceName.asmx?WSDL
В следующем примере кода показан простейший WSDL-файл /parameters, содержащий только требуемые элементы. Его можно использовать в командной строке в сочетании с аргументом URL.
<wsdlParameters xmlns="https://microsoft.com/webReference/">
<nologo>true</nologo>
<parsableerrors>true</parsableerrors>
<sharetypes>true</sharetypes>
</wsdlParameters>
WSDL-документы добавляются в WSDL-файл /parameters с помощью элемента <documents>, как показано в следующем примере кода. Элемент <documents> может содержать произвольное количество элементов <document>.
<wsdlParameters xmlns="https://microsoft.com/webReference/">
<nologo>true</nologo>
<parsableerrors>true</parsableerrors>
<sharetypes>true</sharetypes>
<documents>
<document>https://www.contoso.com/service.asmx?WSDL</document>
</documents>
</wsdlParameters>
В следующем WSDL-файле /parameters показано использование элементов <codeGenerationOptions> и <style>, содержащихся в элементе <webReferenceOptions>. В этом случае файл включает новый стиль привязки данных в коде прокси, предписывает расширению импортера схемы не выводить подробную выходную информацию, а программе Wsdl.exe — создать клиентский прокси-класс.
<wsdlParameters xmlns="https://microsoft.com/webReference/">
<nologo>true</nologo>
<parsableerrors>true</parsableerrors>
<sharetypes>true</sharetypes>
<documents>
<document>https://www.contoso.com/service.asmx?WSDL</document>
</documents>
<webReferenceOptions>
<verbose>false</verbose>
<codeGenerationOptions>properties newAsync enableDataBinding</codeGenerationOptions>
<schemaImporterExtension>
<type>MyNamespace.MyCustomImporterExtension,ExtensionLibrary</type>
</schemaImporterExtensions>
<style>client</style>
</webReferenceOptions>
</wsdlParameters>
См. также
Справочник
Инструмент для обнаружения веб-служб (Disco.exe)
Основные понятия
Создание прокси-класса XML-веб-службы
Описание XML-веб-службы
Общие сведения об XML-веб-службах