我有一个WCF服务,我想根据URI模板生成XML和JSON。所以在我的服务合同中,我有如下的方法
[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。
我怎么能两者兼得呢?