Question

Nous avons essayé d'utiliser un très très simple service WCF avec un Http Get et nous ne pouvons le faire fonctionner. Nous avons suivi ces « guide », mais il ne fonctionne pas

Quand nous appelons notre service à l'adresse suivante, nous obtenons une page non trouvée erreur:

  

http: // localhost: 9999 / Service1.svc / GetData / ABC

L'URL de base (http: // localhost: 9999 / Service1.svc). Fonctionne très bien et renvoie la page d'information de service WCF correctement

Ce sont les étapes et le code pour reproduire notre exemple.

  1. créer dans Visual Studio 2010, un nouveau "service WCF Application" Projet
  2. Remplacez l'interface IService avec ce code

      [ServiceContract()]
      public interface IService1
      {
          [OperationContract()]
          [WebInvoke(Method = "GET", 
                     BodyStyle = WebMessageBodyStyle.Bare, 
                     UriTemplate = "GetData/{value}")]
          string GetData(string value);
      }
    
  3. Remplacer la classe de service avec ce code

    public class Service1 : IService1
    {
        public string GetData(string value)
        {
            return string.Format("You entered: {0}", value);
        }
    }
    
  4. Le regard web.config comme celui-ci          

    <system.web>
       <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
      <services>
          <service name="Service1">
              <endpoint address="" binding="webHttpBinding" contract="IService1" behaviorConfiguration="WebBehavior1">
              </endpoint>
          </service>
      </services>
      <behaviors>
          <endpointBehaviors>
              <behavior name="WebBehavior1">
                 <webHttp helpEnabled="True"/>
        </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
      </behavior>
    </serviceBehaviors>
    

         

  5. Appuyez sur Exécuter et essayer d'appeler la méthode Get

Si quelqu'un obtenir ce ou quelque chose de travail similaire, il serait très gentil si vous pouviez répondre des informations sur l'exemple de travail.

Merci beaucoup

Était-ce utile?

La solution

Je recréée votre échantillon -. Fonctionne comme un charme

Un point: faire votre contrat de service (public interface IService1) et la mise en œuvre de services (public class Service1 : IService1) existent dans un espace de noms .NET ??

Si oui, vous devez changer votre * .svc et votre web.config pour inclure:

<services>
      <service name="Namespace.Service1">
          <endpoint address="" binding="webHttpBinding" 
                    contract="Namespace.IService1" 
                    behaviorConfiguration="WebBehavior1">
          </endpoint>
      </service>
  </services>

L'attribut <service name="..."> et le <endpoint contract="..."> doit inclure l'espace de noms .NET pour que cela fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top