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?