2010-01-05 3 views
18

J'ai un service asmx qui prend un seul paramètre int. Je peux ouvrir l'URL du service et voir l'écran de description du service. De là, je peux entrer les paramètres de la requête dans un formulaire et appeler le service Web.Possible d'appeler le service ASMX avec le paramètre via la chaîne de requête url?

Existe-t-il un moyen d'appeler un service Web directement à partir d'une chaîne URL/requête?

Ce travail ne marche pas:

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

Toutes les idées? J'aimerais vraiment pouvoir le faire à partir d'un lien standard en raison de problèmes de déploiement. Est-ce que je vais devoir emballer la demande dans une page aspx normale?

Répondre

39

Vous pouvez décorer votre méthode pour autoriser les requêtes HTTP GET, ce qui devrait à son tour faire ce que vous cherchez comme ceci:

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

et modifier le web.config:

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

vous serez alors en mesure d'appeler cette méthode comme ceci:

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

EDIT: Notez que cette méthode d'exécution des requêtes GET comporte certains risques de sécurité. Selon le MSDN documentation for UseHttpGet:

Réglage de la UseHttpGet propriété à vrai pourrait poser un risque de sécurité pour votre demande si vous travaillez avec des données sensibles ou des transactions. Dans les requêtes GET, le message est codé par le navigateur dans l'URL et est donc une cible plus facile pour l'altération .

+0

Excellent, je vais donner un coup de feu. – Alex

+0

Ok cela n'a pas fonctionné, a eu exactement la même erreur. – Alex

+0

ne fonctionne pas ... –

9

Les services Web ASMX utilisent SOAP. Les requêtes SOAP utilisent uniquement POST pour appeler des méthodes. Vous devrez générer un client proxy dans votre page aspx pour appeler le service Web. Si vous avez vraiment besoin d'utiliser des verbes GET pour appeler des services Web, vous devrez peut-être utiliser une approche différente, telle que WCF REST.

+0

C'était assez simple et a fonctionné dans ma situation. – Alex

Questions connexes