Инструмент языка описания веб-служб (Wsdl.exe)

Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.

Инструмент языка описания веб-служб создает код для XML-веб-служб и их клиентов из файлов контрактов WSDL, схем XSD и документов обнаружения DISCOMAP.

7h3ystb6.note(ru-ru,VS.100).gifПримечание
Программа WSDL.exe может создавать классы с именами вида «@string». Это допустимые имена типов, в которых префикс @ используется, чтобы разрешить использование имен, содержащих ключевые слова C#.

wsdl [options] {URL | path}

Замечания

Аргумент Описание

URL

URL-адрес файла контракта WSDL, файла схемы XSD или документа обнаружения DISCO. Обратите внимание, что нельзя указать URL-адрес документа обнаружения .discomap.

Path

Путь к локальному файлу контракта WSDL, файлу схемы XSD или документу обнаружения DISCO или DISCOMAP.

7h3ystb6.note(ru-ru,VS.100).gifПримечание
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="http://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="http://microsoft.com/webReference/">. Если указаны значения параметров командной строки и используется файл /parameters, содержащий другие параметры или значения, то используются значения, указанные в командной строке. Элемент <wsdlParameters xmlns="http://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="http://microsoft.com/webReference/">
  <nologo>true</nologo>
  <parsableerrors>true</parsableerrors>
  <sharetypes>true</sharetypes>
</wsdlParameters>

WSDL-документы добавляются в WSDL-файл /parameters с помощью элемента <documents>, как показано в следующем примере кода. Элемент <documents> может содержать произвольное количество элементов <document>.

<wsdlParameters xmlns="http://microsoft.com/webReference/">
  <nologo>true</nologo>
  <parsableerrors>true</parsableerrors>
  <sharetypes>true</sharetypes>
  <documents>
    <document>http://www.contoso.com/service.asmx?WSDL</document>
  </documents>
</wsdlParameters>

В следующем WSDL-файле /parameters показано использование элементов <codeGenerationOptions> и <style>, содержащихся в элементе <webReferenceOptions>. В этом случае файл включает новый стиль привязки данных в коде прокси, предписывает расширению импортера схемы не выводить подробную выходную информацию, а программе Wsdl.exe — создать клиентский прокси-класс.

<wsdlParameters xmlns="http://microsoft.com/webReference/">
  <nologo>true</nologo>
  <parsableerrors>true</parsableerrors>
  <sharetypes>true</sharetypes>
  <documents>
    <document>http://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-веб-службах

Другие ресурсы

.NET Framework Tools
SDK Command Prompt