Como consumir o serviço WCF no modo REST?
Serviço wcf implantado (.net 4.0). A configuração do lado do serviço se parece com:
<endpoint address=""
binding="webHttpBinding"
bindingNamespace="https://mydomain/myservice/services"
behaviorConfiguration="WebBehavior"
contract="MyService" />
<endpointBehaviors>
<behavior name="WebBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
Tentando consumir serviço no aplicativo da 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>
Estou recebendo exceção ao ligar para o serviço:
A operação 'Method1' do contrato 'IMyService' especifica vários parâmetros do corpo da solicitação a serem serializados sem nenhum elemento de wrapper. No máximo, um parâmetro do corpo pode ser serializado sem elementos de invólucro. Remova os parâmetros extras do corpo ou defina a propriedade BodyStyle no WebGetAttribute / WebInvokeAttribute como Wrapped.
Depois de pesquisar no Google, definimos[WebGet(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Xml)]
em métodos, mas sem sucesso ...
Uma coisa interessante: sempre há o mesmo nome de método em exceção, mesmo que eu esteja chamando outros métodos ...
O serviço funciona bem no modo REST durante o teste com o navegador digitando o nome do método e os parâmetros necessários ...