WCF WebInvoke ResponseFormat
Eu tenho um serviço restul WCF e quero permitir que o usuário escolha o formato de solicitação que eles querem, eu tenho as decorações
<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>
Primeiro, existe uma maneira de especificar o ResponseFormat no tempo de execução e tomar o formato como um argumento para o método? De leitura em torno de eu não penso assim ... OK próxima coisa O código acima é ok e funciona, mas im tendo um problema, eu quero ser capaz de especificar um padrão, então quando nenhum argumento de formato é passado então eu apenas padrão, mas se eu decoro assim
<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>
Onde o XML é o padrão, se eu tentar chamar o método de serviço através do navegador, ele me diz que:
UriTemplateTable não suporta vários modelos que têm caminho equivalente ao modelo 'getstreamurl? Ch = {ch}', mas possuem diferentes strings de consulta, onde as strings de consulta não podem ser todas desambigadas através de valores literais. Veja a documentação do UriTemplateTable para mais detalhes
Eles obviamente podem ser distinguidos, mas parece que o WCF está apenas lendo até o argumento e é isso ... Alguma sugestão?