2010-01-05 5 views
18

Ho un servizio asmx che accetta un singolo parametro int. Posso aprire l'URL al servizio e vedere la schermata di descrizione del servizio. Da qui posso inserire i parametri di query in un modulo e richiamare il servizio web.È possibile richiamare il servizio ASMX con parametro tramite url query string?

C'è un modo per richiamare un servizio Web direttamente da una stringa URL/query?

Questo non funziona:

http://localhost:4653/MyService.asmx?op=MyWebMethod&intParameter=1

Tutte le idee? Mi piacerebbe davvero essere in grado di farlo da un collegamento standard a causa di alcuni problemi di distribuzione. Dovrò avvolgere la richiesta in una normale pagina di aspx?

risposta

39

Potete decorare il vostro metodo per consentire richieste HTTP GET, che dovrebbero a loro volta fare quello che stai cercando in questo modo:

[WebMethod] 
[ScriptMethod(UseHttpGet=true)] 
public string MyNiftyMethod(int myint) 
{ 
    // ... code here 
} 

e modificare il web.config:

<system.web> 
<webServices> 
    <protocols> 
    <add name="HttpGet"/> 
    </protocols> 

Allora sarete in grado di chiamare questo metodo in questo modo:

http://mysite.com/Service.asmx/MyNiftyMethod?myint=12345

MODIFICA: si noti che questo metodo di esecuzione delle richieste GET presenta alcuni rischi per la sicurezza. Secondo il MSDN documentation for UseHttpGet:

Impostare la proprietàUseHttpGet a vero potrebbe rappresentare un rischio per la sicurezza per il la vostra applicazione, se si sta lavorando con dati sensibili o transazioni. Nelle richieste GET, il messaggio è codificato dal browser nell'URL ed è quindi un obiettivo più facile per la manomissione dello .

+0

Eccellente, darò uno scatto. – Alex

+0

Ok questo non ha funzionato, ha ottenuto esattamente lo stesso errore. – Alex

+0

non funziona ... –

9

I servizi Web ASMX utilizzano SOAP. Le richieste SOAP utilizzano solo POST per invocare metodi. Sarà necessario generare un client proxy nella pagina aspx per richiamare il servizio Web. Se è davvero necessario utilizzare i verbi GET per richiamare i servizi Web, potrebbe essere necessario utilizzare un approccio diverso, ad esempio WCF REST.

+0

Questo è stato abbastanza semplice e ha funzionato nella mia situazione. – Alex

Problemi correlati