Поделиться через


Как включить обнаружение XML-веб-служб

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

Веб-службы могут быть опубликованы на потенциальных клиентах следующими способами:

  • использованием файла обнаружения XML с расширением DISCO;

  • использованием URL, задающим расширение VSDISCO;

  • использованием веб-службы со строкой запроса ?DISCO.

В этом разделе показано, как задействовать первые два из этих механизмов обнаружения. В этом разделе не рассказывается, как разрешить запросы веб-службы при помощи строки запроса ?DISCO, так как они уже включены автоматически. Сведения об этих возможностях см. в разделе Публикация и развертывание XML-веб-служб.

Публикация документа статического обнаружения для веб-службы

  1. Создайте документ XML в любом редакторе, добавив в первую строку элемент ?xml version="1.0" ?.

  2. В документ XML добавьте элемент discovery, например,

    <disco:discovery xmlns:disco="https://schemas.xmlsoap.org/disco/">
    </disco:discovery>
    
  3. В элемент discovery добавьте ссылки на описания служб, схемы XSD и другие документы обнаружения.

    Можно добавить столько ссылок, сколько вы хотите открыто показать. Ссылки описания службы задаются в документе обнаружения добавлением элемента contractRef с пространством имен XML https://schemas.xmlsoap.org/disco/scl/. Аналогично, ссылки на другие документы обнаружения и схемы XSD задаются добавлением элементов XML discoveryRef и schemaRef соответственно. Для ссылок на схемы XSD должно быть задано пространство имен XML https://schemas.xmlsoap.org/disco/schema. Для всех трех типов документов, на которые ставится ссылка, местоположение документа задается атрибутом ref. Следующий пример кода содержит ссылки на документ обнаружения, описание службы и схему XSD.

    <?xml version="1.0"?>
    <discovery xmlns="https://schemas.xmlsoap.org/disco/">
    <discoveryRef ref="/Folder/Default.disco"/>
    <contractRef ref="http://MyWebServer/UserName.asmx?WSDL"
                 docRef="Service.htm"
                 xmlns="https://schemas.xmlsoap.org/disco/scl/"/>
    <schemaRef ref="Schema.xsd"
               xmlns="https://schemas.xmlsoap.org/disco/schema/"/>
    </discovery>
    

    Ссылки могут быть заданы относительно каталога, где находится документ обнаружения, как показано в элементе discoveryRef, или быть заданы в виде URI, как в элементе contractRef.

  4. Разверните документ обнаружения на веб-сервере, для этого скопируйте его в виртуальный каталог на веб-сервере.

  5. Если вы хотите, чтобы потенциальные пользователи могли перейти к URL, задав приложение IIS, и не указывая документ, можно добавить ссылку на страницу по умолчанию для приложения IIS. Это удобно, так как потенциальным покупателям не нужно знать имена документов обнаружения. Во время процесса обнаружения пользователи могут предоставлять URL следующим образом:

    http://MyWebServer/MyWebApplication
    

    Если страница по умолчанию для веб-приложения является HTML-страницей, добавьте ссылку на документ обнаружения в элемент head веб-страницы по умолчанию для веб-сервера. Например, если назвать документ обнаружения MyWebService.disco и разместить его в том же каталоге, что и страница по умолчанию, в веб-страницу по умолчанию необходимо добавить элемент:

    <HEAD>
    <link type='text/xml' rel='alternate' href='MyWebService.disco'/>
    </HEAD>
    

    Если страница по умолчанию для веб-приложения является документом XML, добавьте ссылку на документ обнаружения в элемент head веб-страницы по умолчанию для веб-сервера. Например, если назвать документ обнаружения MyWebService.disco и разместить его в том же каталоге, что и страница по умолчанию, в верхней части веб-страницы по умолчанию необходимо разместить следующее:

    <?xml-stylesheet type="text/xml" alternate="yes" href="MyWebService.disco" ?>
    

Включение динамического обнаружения для веб-службы

  1. Чтобы включить динамическое обнаружение для веб-сервера, необходимо изменить файл machine.config, добавив следующий элемент <add>. В следующем образце не обращайте внимание на перенос строк, атрибут type должен быть одной строкой.

    <configuration>
      <system.web>
         <httpHandlers>
           <add verb="*" path="*.vsdisco"
               type="System.Web.Services.Discovery.DiscoveryRequestHandler,
                     System.Web.Services, Version=1.0.3300.0,
                     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
               validate="false"/>
         </httpHandlers>
       </system.web>
    </configuration>
    
    tewz1055.note(ru-ru,VS.100).gifПримечание
    Когда включено динамическое обнаружение, все веб-службы и документы обнаружения, расположенные на веб-сервере под запрошенным URL, поддаются обнаружению. Поэтому будьте внимательны, включая динамическое обнаружение, оно может открыть важные данные, если веб-сервер находится в сети, незащищенной брандмауэром и другими средствами безопасности.

См. также

Основные понятия

Публикация и развертывание XML-веб-служб
Параметры конфигурации для XML-веб-служб, созданных с помощью ASP.NET

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

XML-веб-службы с использованием ASP.NET