Есть ли способ динамически изменить WebResponseFormat для метода, заданного параметром, переданным клиентом? Я по умолчанию использую свой WebResponseFormat для XML, но я хочу дать клиенту возможность указать формат в формате JSON или XML, и, если он не указан, по умолчанию используется XML.
В настоящее время я делаю следующее:
[WebGet(UriTemplate = "objects", BodyStyle = WebMessageBodyStyle.Bare)]
[OperationContract]
List<SampleObject> GetObjects();
Пользователь может позвонить через:
http://localhost/rest/myservice/objects
Затем они могут указать формат, выполнив:
http://localhost/rest/myservice/objects?format=json
Проблема в том, что когда я пытаюсь установить тип содержимого ответа через:
WebOperationContext.Current.OutgoingResponse.ContentType = "application/json";
Это просто возвращает XML, но браузер пытается обработать его как объект JSON вместо сериализации ответа как JSON.
Возможно ли это даже при использовании .NET 3.5 за пределами использования Stream в качестве возвращаемого значения и сериализации ответа самостоятельно? Если нет, есть ли лучшее решение?