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?

questionAnswers(2)

yourAnswerToTheQuestion