WCF WebInvoke ResponseFormat

Mam usługę przywracania WCF i chcę, aby użytkownik mógł wybrać żądany format żądania, mam dekoracje

<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>

Po pierwsze, czy istnieje sposób na określenie ResponseFormat w czasie wykonywania i przyjęcie formatu jako argumentu metody? Od czytania dookoła nie sądzę ... OK next thing Powyższy kod jest w porządku i działa, ale mam problem, chcę być w stanie określić domyślne, więc gdy nie ma argumentu dotyczącego formatu, to po prostu domyślnie, ale jeśli dekoruję tak

<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>

Jeśli XML jest domyślny, jeśli spróbuję wywołać metodę usługi przez przeglądarkę, powie mi, że:

UriTemplateTable nie obsługuje wielu szablonów, które mają równoważną ścieżkę jako szablon „getstreamurl? Ch = {ch}”, ale mają różne ciągi zapytań, w których ciągi zapytania nie mogą być ujednoznacznione za pomocą wartości literalnych. Więcej informacji można znaleźć w dokumentacji dla UriTemplateTable

Oczywiście można je rozróżnić, ale wydaje się, że WCF czyta tylko do argumentu i to jest ... Wszelkie sugestie?

questionAnswers(2)

yourAnswerToTheQuestion