【发布时间】:2011-08-19 21:41:27
【问题描述】:
以下是我的合同和 OperationContracts,我的问题是,当我将 WebGet 属性用于我的服务工作正常的所有方法时,当我将 WebGet 属性删除到任何一个 OperationContracts 时,我遇到了以下错误。
操作 'ProductDetails' 的 合同“IDemo”指定多个 请求正文参数为 没有任何包装的序列化 元素。最多一个身体参数 可以在没有包装器的情况下进行序列化 元素。要么删除多余的身体 参数或设置 BodyStyle 财产在 WebGetAttribute/WebInvokeAttribute 到 包裹起来。
这些是我的方法
string AddNumbers(int x,int y); --- using [WebGet]
string SubtractNumbers(int x, int y); -- using [WebGet]
String ProductDetails(string sName, int cost, int Quntity, string binding); -- not using using [WebGet]
CompositeType GetDataUsingDataContract(CompositeType composite); -- not using [WebGet]
如果我们使用WebHttpbinding,是否必须在所有操作合同中包含[WebGet]属性??
public interface IService1
{
[OperationContract]
string GetData(int value,string binding);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/Add?num1={x}&num2={y}")]
string AddNumbers(int x,int y);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/Subtract?num1={x}&num2={y}")]
string SubtractNumbers(int x, int y);
[OperationContract]
String ProductDetails(string sName, int cost, int Quntity, string binding);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
}
【问题讨论】: