2010-07-12 6 views
1

J'ai un contrat WCF simple qui contient les opérations 'GET' et 'POST'. J'ai le service fonctionnant sur localhost. Je suis capable de taper l'adresse de service dans mon navigateur et voir les valeurs de réponse de service. Lorsque j'essaie de faire la même chose à partir du code C#, j'obtiens l'erreur "Il n'y avait pas de point d'écoute à ...". Je peux cependant appeler une méthode 'POST' sur le service depuis le code.Impossible de faire un 'GET' sur le service WCF

Qu'est-ce qui me manque? Ci-dessous mon code contrat

using System; 
using System.ServiceModel; 
using System.ServiceModel.Web; 

namespace WebServiceTest.Services 
{ 
    [ServiceContract] 
    public interface ITestOne 
    { 
     [OperationContract] 
     [WebInvoke(
      Method = "GET", 
      ResponseFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Wrapped, 
      UriTemplate = "GetGreeting/{text1}/{text2}")] 
     string HelloWorld(string text1, string text2); 

     [OperationContract] 
     [WebInvoke(
      Method = "GET", 
      ResponseFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Wrapped, 
      UriTemplate = "Greet/{text1}")] 
     string HelloWorld2(string text1); 

     [OperationContract] 
     [WebInvoke(
      Method="GET", 
      ResponseFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Wrapped, 
      UriTemplate = "Add/{value1}/{value2}")] 
     int Add(string value1, string value2); 

     [OperationContract] 
     [WebInvoke(Method = "POST", 
        ResponseFormat = WebMessageFormat.Json, 
        BodyStyle = WebMessageBodyStyle.Wrapped)] 
     String GetAllSpecies(); 

     [OperationContract] 
     [WebInvoke(
      Method = "GET", 
      ResponseFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Wrapped, 
      UriTemplate = "specie")] 
     String GetAllSpecies2(); 

} 

}

Répondre

1

J'ai trouvé la réponse. Le problème était que le service utilisait le contrat de service ITestOne et que le client utilisait le client proxy généré pour ITestOne (obtenu via le point de terminaison MEX). Le proxy généré ne contenait pas l'attribut [WebGet] contenu dans le contrat de service.

Questions connexes