2009-04-29 6 views

Répondre

10

Je vous recommande de configurer plusieurs points de terminaison pour le service. Ajoutez un point de terminaison à l'aide de webHttpBinding pour obtenir une version XML du service. Si cela est fait correctement, la réponse que vous obtiendrez du service est identique au point de terminaison basicHttpBinding, mais sans le surcoût SOAP. À part cela, vous ne pouvez pas appeler un service Web SOAP directement à partir du navigateur car il nécessite un message de formulaire. Vous pouvez utiliser un outil pour le tester en utilisant SOAP, je recommande Soap UI. C'est écrit en Java mais j'essaie de ne pas tenir ça contre ça. :)

36

Vous devrez ajouter WebGetAttribute à votre méthode comme suit échantillon

[OperationContract] 
[WebGet(UriTemplate = "/placesList/{userId}", 
ResponseFormat = WebMessageFormat.Xml)] 
List<Places> GetAllPlacesForUser(String userId) 
{ 
    string xml = ""; 
    // build xml here 
    return xml; 
} 

maintenant dans le navigateur, vous pourriez appeler la méthode comme celui-ci

http://localhost:8085/GeoPlacesDataService/placesList/10
où 10 est la paramètre userId.

Note: Pour ajouter WebGetAttribute vous devez faire référence à l'espace de noms System.ServiceModel.Web qui se trouve dans un ensemble séparé

+6

Le webget ne fonctionne pas pour moi. IE me montre "mauvaise demande". – Josh

6

Après avoir ajouté le code ci-dessus, la propriété du noeud final doit être modifié web.config, binding="webHttpBinding" et behaviorConfiguration="webHttp".

+3

Pourriez-vous spécifier les étiquettes qui contiennent ces propriétés, s'il vous plaît? Ou ce serait très gentil de votre part si vous nous fournissez votre fichier web.config. –

Questions connexes