У меня есть служба WCF, в которой я хотел бы создавать XML и JSON в зависимости от шаблона URI. Итак, в моем сервисном контракте у меня есть такие методы, как следующие
[ServiceContract]
public interface MultiFormatContract
{
[OperationContract]
[WebGet(UriTemplate="/json/data", ResponseFormat = WebMessageFormat.Json)]
[JSONPBehavior(callback = "callback")]
public MySerializableObject GetJSONData()
[OperationContract]
[WebGet(UriTemplate = "/xml/data", ResponseFormat=WebMessageFormat.Xml)]
public MySerializableObject GetXMLData()
}
У меня есть требование поддерживать JSONP, и я использовал образец Microsoft REST для поддержки этого (после этого http://jasonkelly.net/archive/2009/02/24/using-jquery-amp-jsonp-for-cross-domain-ajax-with-wcf-services.aspx). Однако это означало, что мне пришлось добавить настраиваемую привязку:
<customBinding>
<binding name="jsonpBinding">
<jsonpMessageEncoding/>
<httpTransport manualAddressing="true"/>
</binding>
</customBinding>
Это означает, что WCF больше не использует textMessageEncoding и даже несмотря на то, что JSONPEncoder переопределяет кодировщик текста. Мои конечные точки больше не могут создавать XML.
Я не хочу блокировать потребителей для JSON, и я хотел бы иметь возможность перейти к моей конечной точке Xml, чтобы увидеть Xml для отладки и т. Д.
Есть идеи, как я могу получить и то, и другое?