如何在WCF RESTful服务中创建服务合约以及 XmlSerializerFormat 以及 WebMessageFormat.Json 。
我需要的是从ASP.Net 1.1后面的代码调用“CallADSWebMethod”操作契约,该代码需要XML序列化和 来自jQuery序列化的jQuery ajax。
服务合同
[ServiceContract, XmlSerializerFormat]
public interface IService
{
[OperationContract, XmlSerializerFormat]
[WebInvoke(UriTemplate = "/CallADSWebMethod",
Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json)]
VINDescription CallADSWebMethod(string vin, string styleID);
}
终端信息
<endpoint address="basic"
binding="basicHttpBinding"
name="httpEndPoint"
contract="ADSChromeVINDecoder.IService" />
<endpoint address="json"
binding="webHttpBinding"
behaviorConfiguration="webBehavior"
name="webEndPoint"
contract="ADSChromeVINDecoder.IService" />
<endpoint contract="IMetadataExchange"
binding="mexHttpBinding"
address="mex" />
答案 0 :(得分:2)
您可以做的是像这样指定您的Web服务:
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.WrappedRequest,
UriTemplate = ""/CallADSWebMethod"")]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest,
UriTemplate = ""/CallADSWebMethod"")]
VINDescription CallADSWebMethod(string vin, string styleID);
}
然而,我建议你做的是指定2个不同的端点:一个用于 XML 序列化数据,另一个用于 JSON 序列化数据。来吧老兄,你正在使用 REST架构 .....为什么不充分利用它?!
答案 1 :(得分:1)
通过将webHttpBehavior
的{{1}}属性设置为automaticFormatSelectionEnabled
,可以在没有this answer所示的双重声明的情况下完成此操作。