Attivazione dell'individuazione per un servizio Web XML

L'individuazione di servizi Web XML è un processo che consiste nell'individuare e interrogare le descrizioni di servizi Web XML, fase preliminare per l'accesso a un servizio Web XML. Tramite il processo di individuazione, i client di servizi Web XML ricevono notifica dell'esistenza di un servizio Web e ottengono informazioni sulle funzionalità di cui dispone e su come interagire correttamente con tale servizio.

È possibile attivare l'individuazione a livello di programmazione quando un servizio Web XML pubblica un file DISCO, ovvero un documento XML che può contenere collegamenti ad altri documenti di individuazione, schemi XSD e descrizioni dei servizi. In alternativa, i servizi Web XML creati con ASP.NET sono automaticamente in grado di fornire un documento di individuazione generato. Un documento di individuazione viene generato automaticamente per un servizio Web XML quando si accede a esso utilizzando un URL con ?DISCO nella stringa di query. Se, ad esempio, l'URL del servizio Web XML è www.contoso.com/getquote.asmx, verrà generato automaticamente un documento di individuazione con l'URL www.contoso.com/getquote.asmx?DISCO.

Per attivare l'individuazione per un servizio Web XML

  1. Creare un documento XML con un editor qualsiasi, aggiungendo il tag <?xml version="1.0" ?> alla prima riga.

  2. Aggiungere nel documento XML un elemento <discovery>, quale

    <disco:discovery xmlns:disco="http://schemas.xmlsoap.org/disco/"></disco:discovery>
    
  3. Aggiungere nell'elemento <discovery> i riferimenti alle descrizioni dei servizi, agli schemi XSD e ad altri documenti di individuazione.

    È possibile aggiungere tutti i riferimenti che si desidera esporre pubblicamente. I riferimenti alle descrizioni dei servizi vengono specificati in un documento di individuazione aggiungendo un elemento <contractRef> allo spazio dei nomi XML http://schemas.xmlsoap.org/disco/scl/. Allo stesso modo, i riferimenti ad altri documenti di individuazione e schemi XSD vengono specificati aggiungendo, rispettivamente, elementi XML <discoveryRef> e <schemaRef>. Per i riferimenti agli schemi XSD, è necessario specificare lo spazio dei nomi XML http://schemas.xmlsoap.org/disco/schema. Per tutti i tre tipi di documenti con riferimenti, il percorso del documento viene specificato utilizzando l'attributo ref. Nell'esempio di codice seguente vengono presentati i riferimenti al documento di individuazione, alla descrizione del servizio e a uno schema XSD.

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

    I riferimenti possono essere relativi alla directory in cui risiede il documento di individuazione, come indicato nell'elemento discoveryRef, oppure all'URI, come indicato nell'elemento contractRef.

  4. Distribuire il documento di individuazione al server Web copiandolo su una directory virtuale sul server Web.

  5. Per consentire ai potenziali clienti di accedere a un URL specificando un'applicazione IIS senza dover specificare alcun documento, è possibile aggiungere un collegamento alla pagina predefinita per l'applicazione IIS. In questo modo i clienti non devono obbligatoriamente conoscere il nome di alcun documento di individuazione. Gli utenti possono quindi fornire URL, simile a quello riportato di seguito, durante il processo di individuazione.

    http://MyWebServer/MyWebApplication
    

    Se la pagina predefinita per l'applicazione Web è una pagina HTML:
    Aggiungere un collegamento al documento di individuazione nel tag <head> della pagina Web predefinita per il server Web. Se al documento di individuazione viene, ad esempio, assegnato il nome MyWebService.disco e il documento viene collocato nella stessa directory della pagina predefinita, è necessario inserire il tag seguente nella pagina Web predefinita:

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

    Se la pagina predefinita per l'applicazione Web è un documento XML:

    Aggiungere un collegamento al documento di individuazione nel tag <head> della pagina Web predefinita per il server Web. Se al documento di individuazione viene, ad esempio, assegnato il nome MyWebService.disco e il documento viene collocato nella stessa directory della pagina predefinita, è necessario inserire quanto riportato di seguito nella parte superiore della pagina predefinita:

    <?xml-stylesheet type="text/xml" alternate="yes" href="MyWebService.disco" ?>
    
  6. Se si utilizza Visual Studio .NET, sarà anche possibile attivare l'individuazione automatica, con cui le applicazioni client potranno individuare i servizi Web XML disponibili su un server Web senza che occorra creare un documento di individuazione. Quando si attiva l'individuazione automatica, le applicazioni client specificano un URL facendo riferimento a un file con una sezione VSDISCO, quale www.contoso.com/default.vsdisco, nella finestra di dialogo Aggiungi riferimento Web, anziché a uno specifico documento di individuazione.

    Per attivare l'individuazione automatica su un server Web, aggiungere a machine.config l'elemento <add> mostrato di seguito. Ignorare le interruzioni di riga presenti nell'esempio, poiché l'attributo type deve essere su una sola riga.

    <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   **Quando si attiva l'individuazione automatica, tutti i servizi Web XML e i documenti di individuazione presenti sul server Web sotto l'URL richiesto saranno individuabili. Occorre pertanto prestare attenzione, poiché se il server Web non si trova in una rete sicura che dispone di un firewall, quando si attiva l'individuazione automatica è possibile esporre involontariamente informazioni riservate.

Vedere anche

Distribuzione dei servizi Web XML | Opzioni di configurazione per i servizi Web XML creati con ASP.NET | Generazione di servizi Web XML mediante ASP.NET