¿El servicio WCF RESTful que puede responder tanto en JSON (P) como en XML y aún puede usarse como servicio web SOAP?

StackOverflow https://stackoverflow.com/questions/607767

  •  03-07-2019
  •  | 
  •  

Pregunta

Dado un contrato como:

[ServiceContract] public interface IService
{
    [OperationContract]
    [WebGet(UriTemplate = "GetData/{id}.{format}")]
    ResponseData GetData(string id, string format);
}

¿Hay una manera de hacer que el servicio responda con json cuando se solicita como: /GetData/1234.json, xml cuando se solicite como /GetData/1234.xml y aún estará disponible como un servicio de jabón adecuado en alguna otra URL, con un contrato wsdl fuertemente tipado?

El uso de un flujo como valor de retorno para GetData no es viable, ya que si cumple con los dos primeros requisitos, wcf no puede crear una especificación completa de wsdl ya que no tiene idea de cuál será el contenido del flujo resultante. / p>

¿Fue útil?

Solución

Usted debería tener dos métodos separados que toman id y formato (y llamarían una implementación compartida que devuelve ResponseData ) que tienen diferentes WebGet Atributos :

[ServiceContract]
public interface IService
{
    [OperationContract]
    [WebGet(UriTemplate = "GetData/{id}.{format}.xml", 
        ResponseFormat=WebMessageFormat.Xml)]
    ResponseData GetDataXml(string id, string format);

    [OperationContract]
    [WebGet(UriTemplate = "GetData/{id}.{format}.json", 
        ResponseFormat=WebMessageFormat.Json)]
    ResponseData GetDataJson(string id, string format);
}

Para el punto final SOAP, debe poder llamar a cualquiera de los dos métodos, pero tendrá que tener un ServiceHost que alberga la implementación del contrato.

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