Pregunta

¿Cuál es el mínimo necesario que necesito poner en web.config para que WCF funcione con REST? He anotado mis métodos con [WebGet], pero no reciben el mensaje.

¿Fue útil?

Solución

Descubrí que puedes agregar lo siguiente a la directiva ServiceHost en el archivo * .svc, y configurará automáticamente WebHttpBinding y WebHttpBehavior para ti:

Factory="System.ServiceModel.Activation.WebServiceHostFactory"

Tenga en cuenta que el espacio de nombres es un poco diferente de lo que se menciona en otra parte de la web (como en este artículo de MSDN ).

¡Después de hacer esto, pude eliminar toda la sección de web.config y todo funcionó!

Otros consejos

Asegúrese de utilizar un enlace webHttpBinding en su punto final (y no un enlace http o wsHttpBinding). Aquí está mi configuración de punto final ...

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

Debe asegurarse de tener una dirección para el host de su servicio, por ejemplo,

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

Por lo tanto, ahora, si está alojando a través de una aplicación de consola, por ejemplo ... puede invocar a su host a través de:

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

Cuando se inicie la aplicación de consola, la dirección será navegable incluso si está alojada por sí misma y debería poder invocar sus acciones en función de sus plantillas de uri webget.

Esta configuración mínima le permitirá invocar WCF RestFULLY a través de autohospedaje. Si está alojando en IIS, esencialmente funcionaría de la misma manera, excepto que el archivo svc reemplaza a nuestro host personalizado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top