2010-12-27 13 views
5

Despliegue del servicio wcf (.net 4.0). config lado de servicio se ve así:¿Cómo se consume el servicio WCF en modo REST?

<endpoint address="" 
      binding="webHttpBinding" 
      bindingNamespace="https://mydomain/myservice/services"  
      behaviorConfiguration="WebBehavior" 
      contract="MyService" /> 

<endpointBehaviors> 
    <behavior name="WebBehavior"> 
    <webHttp /> 
    </behavior> 
</endpointBehaviors> 

Tratando consumen servicio de aplicación web, web.config parece:

<system.serviceModel> 
    <client>  
     <endpoint name="MyServiceEndpointBasicHttp" 
        address="http://myDomain/myService" 
        binding="webHttpBinding" behaviorConfiguration="webBehavior" 
        contract="MyNamespace.IMyService" /> 
    </client> 
    <behaviors> 
     <endpointBehaviors> 
      <behavior name="webBehavior"> 
       <webHttp />  
      </behavior>  
      </endpointBehaviors> 
    </behaviors> 
</system.serviceModel> 

Estoy recibiendo una excepción cuando se llama a un servicio:

Operación 'Método1' del contrato 'IMyService' especifica múltiples parámetros del cuerpo de solicitud que serán serializados sin envoltorio elementos. A lo sumo un parámetro de cuerpo se puede serializar sin los elementos de wrapper . Elimine los parámetros de cuerpo extra o establezca la propiedad BodyStyle en WebGetAttribute/WebInvokeAttribute en Envuelto.

Después de algunas google, hemos establecido [WebGet(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Xml)] en los métodos, pero sin éxito ...

Una cosa interesante: Siempre existe el mismo nombre de método en la excepción, aun estoy llamando a otros métodos. ..

servicio funciona bien en modo de descanso, mientras que las pruebas con el navegador mediante la introducción de nombre del método y parametros necesarios ...

+2

¿Puede mostrarnos el ** contrato de servicio ** con la definición de sus métodos de servicio? –

Respuesta

3

parece que estamos enfrentando problema similar como en este hilo: WCF Service Proxy throws exception when more than one parameter is used in [OperationContract] method

"Parece que ha creado el código Proxy usando el cuadro de diálogo Agregar referencia de servicio en VS. El cuadro de diálogo VS ASR no es compatible con WCF REST por completo, por lo que al código proxy le falta el atributo [WebInvoke]. ¿Puedes intentar agregar el atributo [WebInvoke (BodyStyle = WebMessageBodyStyle.Wrapped)] en las operaciones en el proxy del cliente? "

+1

¿Qué quiere decir con "agregar atributo en las operaciones en el proxy del cliente"? ¿En qué archivo debe agregarse? – iamCR

Cuestiones relacionadas