web-dev-qa-db-fra.com

Appel de la méthode de service WCF via un navigateur

J'ai un service WCF qui utilise une liaison http de base. Comment invoquer ses opérations/méthodes via un navigateur?

29
Steve Chapman

Je recommanderais 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 la surcharge SOAP.

En dehors de cela, vous ne pouvez pas appeler un service Web SOAP directement à partir du navigateur car il nécessite une publication de formulaire. Vous pouvez utiliser un outil pour le tester en utilisant SOAP cependant, je recommande IU Soap . C'est écrit en Java mais j'essaie de ne pas lui en vouloir. :)

10
Steve

Vous devez ajouter WebGetAttribute à votre méthode comme l'exemple suivant

[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 pouvez invoquer la méthode comme celle-ci

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

Remarque: Pour ajouter WebGetAttribute, vous devez référencer l'espace de noms System.ServiceModel.Web qui se trouve dans un assembly séparé

36
Jalal El-Shaer

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

6
Sameer Kamarudeen