Domanda

Abbiamo cercato di usare un molto molto semplice servizio WCF con un HTTP GET e non si può ottenere il lavoro. Abbiamo seguito quelli "guida", ma non funziona

Quando chiamiamo il nostro servizio con il seguente URL, otteniamo un errore di pagina non trovata:

  

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

l'URL di base (http: // localhost: 9999 / Service1.svc). Funziona bene e restituisce correttamente la pagina di informazioni di servizio WCF

Questi sono i passi e il codice per riprodurre il nostro esempio.

  1. In Visual Studio 2010, creare un nuovo "servizio WCF Application" Progetto
  2. Sostituire l'interfaccia IService con questo codice

      [ServiceContract()]
      public interface IService1
      {
          [OperationContract()]
          [WebInvoke(Method = "GET", 
                     BodyStyle = WebMessageBodyStyle.Bare, 
                     UriTemplate = "GetData/{value}")]
          string GetData(string value);
      }
    
  3. Sostituire la classe di servizio con questo codice

    public class Service1 : IService1
    {
        public string GetData(string value)
        {
            return string.Format("You entered: {0}", value);
        }
    }
    
  4. Il look web.config come questo          

    <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. Premere Esegui e provare a chiamare il metodo Get

Se qualcuno ottenere questo o qualcosa di lavoro simile, sarebbe molto gentile se potesse rispondere informazioni sulla esempio di lavoro.

La ringrazio molto

È stato utile?

Soluzione

Ho ricreato il campione -. Funziona come un fascino

Un punto: fare il vostro contratto di servizio (public interface IService1) e implementazione del servizio (public class Service1 : IService1) esistere all'interno di un namespace .NET ??

Se è così, è necessario modificare la vostra * .svc e la tua web.config per includere:

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

L'attributo <service name="..."> ed il <endpoint contract="..."> deve includere il namespace .NET per questo al lavoro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top