Share via


Habilitar el descubrimiento para un servicio Web XML

El descubrimiento de servicios Web XML es un proceso que consiste en buscar y consultar descripciones de servicio Web XML como paso previo para tener acceso a un servicio Web XML. Mediante el proceso de descubrimiento, los clientes de servicios Web XML pueden tener conocimiento, en la etapa de diseño, de la existencia de un servicio Web XML, sus capacidades y la forma correcta de interactuar con él.

El descubrimiento mediante programación se puede habilitar cuando un servicio Web XML publica un archivo .disco, que consiste en un documento XML que contiene vínculos a otros documentos de descubrimiento, esquemas XSD y descripciones de servicio. Como alternativa, los servicios Web XML creados mediante ASP.NET automáticamente tienen la capacidad de proporcionar un documento de descubrimiento generado. Un documento de descubrimiento se genera automáticamente para un servicio Web XML cuando se tiene acceso al mismo mediante una dirección URL donde se incluye ?DISCO en la cadena de consulta. Por ejemplo, si la dirección URL de un servicio Web XML es www.contoso.com/getquote.asmx, se genera automáticamente un documento de descubrimiento con la dirección URL www.contoso.com/getquote.asmx?DISCO.

Para habilitar el descubrimiento para un servicio Web XML

  1. Cree un documento XML con el editor que prefiera y agregue la etiqueta <?xml version="1.0" ?> en la primera línea.

  2. En el documento XML, agregue un elemento <discovery>, por ejemplo

    <disco:discovery xmlns:disco="https://schemas.xmlsoap.org/disco/"></disco:discovery>
    
  3. En el elemento <discovery>, agregue referencias a descripciones de servicio, esquemas XSD y demás documentos de descubrimiento.

    Puede agregar todas las referencias que desee exponer públicamente. Para especificar referencias a descripciones de servicio en un documento de descubrimiento, agregue un elemento <contractRef> con el espacio de nombres XML https://schemas.xmlsoap.org/disco/scl/. Igualmente, para especificar referencias a otros documentos de descubrimiento y esquemas XSD, agregue los elementos XML <discoveryRef> y <schemaRef>, respectivamente. Para las referencias a esquemas XSD, se debe especificar el espacio de nombres XML https://schemas.xmlsoap.org/disco/schema. En los tres tipos de documentos de referencia, se utiliza el atributo ref para especificar la ubicación del documento. El ejemplo de código siguiente contiene referencias a un documento de descubrimiento, una descripción de servicio y un esquema 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>
    

    Las referencias pueden ser relativas al directorio donde reside el documento de descubrimiento, como se muestra en el elemento discoveryRef, o a un identificador URI, como se muestra en el elemento contractRef.

  4. Copie el documento de descubrimiento en un directorio virtual de un servidor Web para implementarlo.

  5. Opcionalmente, si desea permitir que los posibles consumidores exploren para llegar hasta una dirección URL mediante la especificación de una aplicación IIS, sin tener que especificar un documento, puede agregar un vínculo a la página predeterminada de la aplicación IIS. La ventaja es que los posibles consumidores no tienen que conocer el nombre de ningún documento de descubrimiento. Después, los usuarios pueden suministrar direcciones URL como las siguientes durante el proceso de descubrimiento:

    http://MyWebServer/MyWebApplication
    

    Si la página predeterminada de la aplicación Web es una página HTML:
    Agregue un vínculo al documento de descubrimiento en la etiqueta <head> de la página Web predeterminada del servidor Web. Por ejemplo, si da el nombre MyWebService.disco al documento de descubrimiento y lo coloca en el mismo directorio que la página predeterminada, debe colocar la siguiente etiqueta en la página Web predeterminada:

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

    Si la página predeterminada de la aplicación Web es un documento XML:

    Agregue un vínculo al documento de descubrimiento en la etiqueta <head> de la página Web predeterminada del servidor Web. Por ejemplo, si da el nombre MyWebService.disco al documento de descubrimiento y lo coloca en el mismo directorio que la página predeterminada, al principio de ésta se debe colocar lo siguiente:

    <?xml-stylesheet type="text/xml" alternate="yes" href="MyWebService.disco" ?>
    
  6. Opcionalmente, si utiliza Visual Studio .NET, puede activar el descubrimiento dinámico para que las aplicaciones cliente de servicios Web XML puedan descubrir los servicios Web XML disponibles en un servidor Web, sin necesidad de crear un documento de descubrimiento. Cuando se activa esta opción, las aplicaciones cliente especifican una dirección URL que hace referencia a un archivo con una sección .vsdisco, como www.contoso.com/default.vsdisco en el cuadro de diálogo Agregar referencia Web, en vez de especificar un documento de descubrimiento.

    Para activar el descubrimiento dinámico en un servidor Web, modifique el archivo machine.config para agregar el elemento <add> siguiente. Omita los saltos de línea del ejemplo siguiente, puesto que el atributo type debe estar en una sola línea.

    <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>
    

    **Nota   **Cuando se activa el descubrimiento dinámico, es posible descubrir todos los servicios Web XML y documentos de descubrimiento existentes en el servidor Web que se encuentren detrás de la dirección URL solicitada. Por tanto, es necesario tener cuidado al activar el descubrimiento dinámico, ya que puede exponer datos confidenciales de forma involuntaria si el servidor Web no se encuentra en una red protegida con un servidor de seguridad.

Vea también

Implementar servicios Web XML | Opciones de configuración de servicios Web XML creados mediante ASP.NET | Generar servicios Web XML mediante ASP.NET