Domanda

Qual è il minimo indispensabile che devo inserire in web.config per far funzionare WCF con REST? Ho annotato i miei metodi con [WebGet], ma non ricevono il messaggio.

È stato utile?

Soluzione

Ho scoperto che puoi aggiungere quanto segue alla direttiva ServiceHost nel file * .svc e imposterà automaticamente WebHttpBinding e WebHttpBehavior per te:

Factory="System.ServiceModel.Activation.WebServiceHostFactory"

Si noti che lo spazio dei nomi è leggermente diverso da quello menzionato altrove sul Web (come in questo articolo MSDN ).

Dopo averlo fatto, sono stato in grado di eliminare l'intera sezione da web.config e tutto funzionava ancora!

Altri suggerimenti

Assicurarsi di utilizzare un webHttpBinding sull'endpoint (e non un httpBinding o wsHttpBinding). Ecco la mia configurazione dell'endpoint ...

    <endpoint address="" binding="webHttpBinding" bindingConfiguration=""
      contract="WcfCore.ICustomer">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

È necessario assicurarsi di disporre di un indirizzo per l'host del servizio, ad esempio

<services>
      <service name="SomeLib.SomeService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/somebase"/>
          </baseAddresses>
        </host>
<!-- And one EndPoint **basicHttpBinding** WILL WORK !!! -->

        <endpoint 
                   address="basic"
                   binding="basicHttpBinding"
                   contract="SomeLib.SomeContract"/>
</service>
</services>

Quindi ora, se fai l'hosting automatico tramite un'app console per esempio ... puoi invocare il tuo host tramite:

WebChannelFactory<IServiceContract> factory =
        new WebChannelFactory<IServiceContract>(
            new Uri("http://localhost:8080/somebase"));

All'avvio dell'app console, l'indirizzo sarà navigabile anche se è ospitato autonomamente e dovresti essere in grado di invocare le tue azioni in base ai tuoi modelli di uri webget.

Questa configurazione minima ti consentirà di richiamare WCF RestFULLY tramite selfhosting. Se stai ospitando in IIS, funzionerebbe essenzialmente allo stesso modo, tranne per il fatto che il file svc sostituisce il nostro host personalizzato.

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