Question

Quel est le strict minimum dont j'ai besoin dans Web.config pour que WCF fonctionne avec REST? J'ai annoté mes méthodes avec [WebGet], mais elles ne reçoivent pas le message.

Était-ce utile?

La solution

J'ai découvert que vous pouvez ajouter les éléments suivants à la directive ServiceHost dans le fichier * .svc. Le programme configurera automatiquement WebHttpBinding et WebHttpBehavior pour vous:

Factory="System.ServiceModel.Activation.WebServiceHostFactory"

Notez que l’espace de noms est un peu différent de ce qui est mentionné ailleurs sur le Web (comme dans cet article MSDN ).

Après cela, j'ai pu supprimer toute la section de web.config et tout fonctionnait encore!

Autres conseils

Assurez-vous que vous utilisez un lien WebHttpBinding sur votre ordinateur d'extrémité (et non un lien httpBinding ou wsHttpBinding). Voici ma configuration de point final ...

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

Vous devez vous assurer que vous disposez d'une adresse pour votre hôte de service, par exemple

.
<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>

Alors maintenant, si vous êtes en auto-hébergement via une application console, par exemple, vous pouvez appeler votre hôte via:

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

Lorsque l'application de la console démarrera, l'adresse pourra être consultée même si elle est auto-hébergée. Vous devriez pouvoir invoquer vos actions en fonction de vos modèles Webget uri.

Cette configuration minimale vous permettra d’appeler WCF RestFULLY via un hébergement autonome. Si vous hébergez dans IIS, il fonctionnerait essentiellement de la même manière, sauf que le fichier svc remplace notre hôte personnalisé.

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