【发布时间】:2011-02-14 04:11:21
【问题描述】:
我有一个 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。
关于如何同时拥有两者的任何想法?
【问题讨论】: