WCF WebInvoke ResponseFormat
Tengo un servicio de servicio de WCF y quiero permitir que el usuario elija el formato de solicitud que desee, tengo las decoraciones
<code> [OperationContract] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getstreamurl?ch={ch}&format=xml")] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getstreamurl?ch={ch}&format=json")] </code>
En primer lugar, ¿hay una manera de especificar el ResponseFormat en tiempo de ejecución y tomar el formato como un argumento para el método? Después de leer alrededor, no lo creo ... OK siguiente cosa El código anterior está bien y funciona, pero tengo un problema, quiero poder especificar un valor predeterminado, por lo que cuando no se pasa ningún argumento de formato, simplemente lo prefiero, pero si yo decoro asi
<code> [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getstreamurl?ch={ch})] [OperationContract] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getstreamurl?ch={ch}&format=json")] </code>
Donde el XML es el predeterminado, si trato de llamar al método de servicio a través del navegador, me dice que:
UriTemplateTable no admite varias plantillas que tengan una ruta de acceso equivalente a la plantilla 'getstreamurl? Ch = {ch}', pero tienen diferentes cadenas de consulta, donde las cadenas de consulta no pueden ser desambiguadas a través de valores literales. Consulte la documentación de UriTemplateTable para obtener más detalles.
Obviamente se pueden distinguir, pero parece que WCF solo está leyendo el argumento y eso es ... ¿Alguna sugerencia?