У меня есть сервис 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 для отладки и т. Д.
Любые идеи о том, как я могу иметь оба?