2009-07-16 33 views
5

Tengo un servicio web existente que devuelve respuestas XML y me gustaría agregar algunos métodos nuevos que devuelvan JSON. ¿Tengo que crear un servicio web separado que vuelva en JSON o puedo tener una mezcla?Devolver formato JSON AND XML desde un servicio web .NET 3.5 WCF (RESTO)

Si uso ResponseFormat = WebMessageFormat.JSON Necesito tener el servicio anotado con [DataContractFormat] pero no puedo tener eso y [XmlSerializerFormat] que se requiere para el formato de respuesta de tipo xml.

Respuesta

3

No veo por qué esto no es posible. Anota el servicio con el atributo [ServiceContract] (no DataContractFormat). Debería verse como

[ServiceContract] 
    public interface IDoStuff 
    { 
     [OperationContract] 
     [WebInvoke(Method = "POST", 
      UriTemplate = "DoStuff", 
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json)] 
     TestObj DoWork(TestInputObj Inp); 
    } 

Para que sea xml, simplemente cambie el formato de respuesta. Cuando haga su comando de publicación, obtendrá json, un método diferente con el formato xml le dará xml.

1

¿Sabe con certeza que necesita XmlSerializerFormat? Eso solo es necesario si necesita serializar a XML que no cumple con las reglas para el serializador de contrato de datos.

Si lo necesita, necesita un segundo servicio. Eso es bastante fácil sin embargo. Simplemente extraiga las agallas de las operaciones en común en métodos separados, luego llame a esos métodos desde ambos servicios.

0

Creo que está refiriendo al atributo XMLSerilization pegado como tipo de xml. Si es así, no afectará sus datos json. puede usar eso para serializar ambos XML & Json. response.Content.ReadAsJsonDataContract()/ReadAsXmlDataContract() donde T es para tipo XMLSerilizable.

Cuestiones relacionadas