Logo UGIdotNET

Invocare un webservice tramite POST HTTP

Con la configurazione di default è possibile invocare webservices remoti solo tramite HTTP SOAP (per i test da locale i webservices sono abilitati per ricevere chiamate sia HTTP SOAP che HTTP POST)

E' possibile però cambiare questo comportamento agendo su delle chiavi di configurazione, sia a livello di macchina (machine.config) che per singola applicazione del web.config.

La configurazione dei web services sta dentro al blocco <system.web>, racchiuso nel tag <webServices>.

<system.web>
    ...
    <webServices>
        <protocols>
              <
add name="HttpSoap"/> 
              <!-- <
add name="HttpPost"/> --> 
              <!-- <
add name="HttpGet"/>  -->
              <
add name="Documentation"/>
              <
add name="HttpPostLocalhost"/>
        </protocols>
    </webServices>
    ...
</system.web>

Questa è la configurazione di default (i valori sono abbastanza auto-esplicativi): basta quindi abilitare anche HttpPost nel machine.config per permettere di connetersi a tutti i propri webservices via HttpPost, oppure basta mettere solo <add name="HttpPost"/> nel web.config dell'applicazione per la quale dev'essere abilitata.

Nella prima versione del framework (1.0) erano tutti abilitati per default, poi, per problemi di sicurezza, sono stati disabilitati (HttpPostLocalhost è stato aggiunto per permettere i test da locale).
Detto questo ricordate che abilitare il POST verso un WebService è in ogni caso una pratica da limitare solo ai casi strettamente necessari perchè rende più "facile" chiamare il webservice e quindi ci si rende più esposti ad attacchi di vario tipo.
Per maggiori dettagli sulla configurazione e sulle impicazioni di sicurezza c'è questo interessante articolo sul sito MSDN:
Configuration Options for XML Web Services Created Using ASP.NET.

Autore: Simone Chiaretta
Data: 09 giugno 2006
Ultimo aggiornamento: 09 giugno 2006
Categorie: 

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185